西工大POJ100题全新DOC.docx
《西工大POJ100题全新DOC.docx》由会员分享,可在线阅读,更多相关《西工大POJ100题全新DOC.docx(91页珍藏版)》请在冰豆网上搜索。
![西工大POJ100题全新DOC.docx](https://file1.bdocx.com/fileroot1/2023-1/26/80e1e5f2-7ac0-465e-b77a-6c5adccec2ef/80e1e5f2-7ac0-465e-b77a-6c5adccec2ef1.gif)
西工大POJ100题全新DOC
1·计算A+B
2·圆及圆球等的相关计算
3·计算成绩
4·找最大数
5·找幸运数
6·奖金发放
7·出租车费
8·是该年的第几天
9·成绩转换
10·求建筑高度
11·区间内素数
12·计算π
13·两个整数之间所有的素数
14·最次方数
15·自然数立方的乐趣
16·五猴分桃
17·完全数
18·二分求根
19·你会存钱吗?
20·级数和
21·幸运数字7
22·粒子裂变
23·特殊整数
24·最大乘积
25·解不等式
26·危险的组合
27·子序列的和
29·探索合数世纪
30·韩信点兵
31·亲和数
32·高低交换
33·循环移位
35·组合数
36·积分计算
37·数据加密
38·获取指定二进制位
39·ACKERMAN
40·不会吧,又是A+B
41·平均值函数
42·插入排序
43·一维数组赋值
44·右下角
45·右上角
46·山迪的麻烦
47·冒泡排序
48·恐怖水母
49·左上角
50·一维数组加法
51·字符串排序
52·字符串左中右
53·文章统计
54·找出数字
55·字符串比较
56·THECLOCK
57·合并字符串
58·特殊要求的字符串
59·字符串逆序
60·COINTEST
61·小型数据库
62·单词频次
65·检测位图长宽
67·子字符串替换
68·复数
69·字符串加密编码
70·重组字符串
71·大数除法
72·创建与遍历职工链表
73·大数加法
74·大数减法
75·链表节点删除
76·链表动态增长或缩小
77·大数乘法
78·精确乘幂
80·火车站
81·操场训练
82·HAILSTONE
84·阶乘合计
85·王的对抗
86·三点顺序
87·公园喷水器
88·勇闯天涯
89·不屈的小蜗
90·THERATIOOFGAINERSTOLOSERS
91·GRAVEYARD
92·ARITHMETICPROGRESSIONS
93·SCORING
94·HOUSEBOAT
97·BEE
98·CHECKSUMALGORITHM
99·Hanoi2
100·Specializednumber
1·计算A+B
#include
intmain()
{
inta,b,sum;
scanf("%d%d",&a,&b);
sum=a+b;
printf("%d",sum);
}
2·圆及圆球等的相关计算
#include
intmain()
{
floatr,h,l,s,sq,vq,vz,pi=3.141592653;
scanf("%f%f",&r,&h);
l=2*pi*r;
s=pi*r*r;
sq=4*pi*r*r;
vq=4.0/3*pi*r*r*r;
vz=pi*r*r*h;
printf("%.2f\n%.2f\n%.2f\n%.2f\n%.2f\n",l,s,sq,vq,vz);
return0;
}
3·计算成绩
#include
intmain()
{
floata,b,c,sum,ave;
scanf("%f%f%f",&a,&b,&c);
sum=a+b+c;
ave=sum/3.0;
printf("%.6f\n%.6f",sum,ave);
return0;
}
4·找最大数
#include
intmain()
{
inta,b,c,t;
scanf("%d%d%d",&a,&b,&c);
if(a
if(aprintf("%d",a);
return0;
}
5·找幸运数
#include
intmain()
{
inti,j,a;
scanf("%d",&a);
i=0;
j=a;
while(j)
{
i=10*i+(j%10);
j=j/10;
}
if(i==a)
printf("yes\n");
elseprintf("no\n");
return0;
}
6·奖金发放
#include
intmain()
{
floatl;
scanf("%f",&l);
if(l<=10)l=l*0.1;
elseif(l<=20)l=10*0.1+(l-10)*0.075;
elseif(l<=40)l=10*0.1+10*0.075+(l-20)*0.05;
elseif(l<=60)l=10*0.1+10*0.075+20*0.05+(l-40)*0.03;
elseif(l<=100)l=10*0.1+10*0.075+20*0.05+20*0.03+(l-60)*0.015;
elsel=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(l-100)*0.01;
printf("%.6f",l);
return0;
}
7·出租车费
#include
#include
intmain()
{
floata,n,t;
scanf("%f",&a);
if(a<=2)n=7;
elseif(a<=15){
t=a-floor(a);
if(t==0)n=7+(floor(a)-2)*1.5;
elsen=7+(floor(a)-1)*1.5;
}
else{
t=a-floor(a);
if(t==0)n=7+13*1.5+(floor(a)-15)*2.1;
elsen=7+13*1.5+(floor(a)-14)*2.1;}
printf("%.6f",n);
return0;
}
8·是该年的第几天
#include
intmain()
{
inty,m,d,n,a;
scanf("%d-%d-%d",&y,&m,&d);
if((y%4==0&&y%100!
=0)||(y%400==0))a=29;
elsea=28;
switch(m)
{
case1:
n=d;break;
case2:
n=31+d;break;
case3:
n=31+a+d;break;
case4:
n=62+a+d;break;
case5:
n=92+a+d;break;
case6:
n=123+a+d;break;
case7:
n=153+a+d;break;
case8:
n=184+a+d;break;
case9:
n=215+a+d;break;
case10:
n=245+a+d;break;
case11:
n=276+a+d;break;
case12:
n=306+a+d;break;
}
printf("%d",n);
return0;
}
9·成绩转换
#include
intmain()
{
intn;
scanf("%d",&n);
if(n<60)printf("E\n");
elseif(n<70)printf("D\n");
elseif(n<80)printf("C\n");
elseif(n<90)printf("B\n");
elseprintf("A\n");
return0;
}
10·求建筑高度
#include
intmain()
{
floatx,y,a,b,c,d;
scanf("%f,%f",&x,&y);
a=(x-2)*(x-2)+(y-2)*(y-2);
b=(x-2)*(x-2)+(y+2)*(y+2);
c=(x+2)*(x+2)+(y-2)*(y-2);
d=(x+2)*(x+2)+(y+2)*(y+2);
if(a<=1||b<=1||c<=1||d<=1)printf("10");
elseprintf("0");
return0;
}
11·区间内素数
#include
#include
intmain()
{
inti,n=500,cnt=0,sum=0;
while(n<=800){
for(i=2;i<=n-1;i++)
if(n%i==0)break;
if(i==n)cnt=cnt+1,sum=sum+pow((-1),cnt)*n;
n=n+1;
}
printf("%d%d",cnt,sum);
return0;
}
12·计算π
#include
#include
intmain()
{
ints=1;
doublepi=0,n=1,t=1;
while(fabs(t)>1e-6)
pi=pi+t,n=n+2,s=-s,t=s/n;
pi=pi*4;
printf("%.6f",pi);
return0;
}
13·两个整数之间所有的素数
#include
intmain()
{
inta,b,t,i;
scanf("%d%d",&a,&b);
if(a>b)t=a,a=b,b=t;
while(a<=b){
for(i=2;i<=a-1;i++)
if(a%i==0)break;
if(i==a)printf("%d",a);
a++;
}
return0;
}
14·最次方数
#include
intmain()
{
intx,a,m=1,n=1;
scanf("%d%d",&x,&a);
while(m<=a){
n=n*x;
n=n%1000;
m=m+1;
}
printf("%d",n);
return0;
}
15·自然数立方的乐趣
#include
intmain()
{
intn,a,i,t;
scanf("%d",&n);
a=n*(n-1)+1;
t=n*n*n;
printf("%d*%d*%d=%d=",n,n,n,t);
for(i=1;iprintf("%d+",a);
a=a+2;}
printf("%d",a);
return0;
}
16·五猴分桃
#include
intdivides(intn,intm)
{
if(n/5==0||n%5!
=1)return0;
if(m==1)return1;
returndivides(n-n/5-1,m-1);
}
intmain()
{
intn,a;
for(n=1;;n++)
if(divides(n,5)){
printf("%d",n);break;
}
a=(((((n-1)*4/5-1)*4/5-1)*4/5-1)*4/5-1)*4/5;
printf("%d",a);
return0;
}
17·完全数
#include
intmain()
{
inti,n,sum=0;
for(n=2;n<1000;n++){
sum=0;
for(i=1;i<=n/2;i++){
if(n%i==0)sum=sum+i;}
if(sum==n){printf("%d=",n);
for(i=1;iif(n%i==0)printf("%d+",i);
i=n/2;
printf("%d\n",i);}
}
return0;
}
18·二分求根
#include
#include
doublefun(doublex){return2*x*x*x-4*x*x+3*x-6;}
doubleroot(doublea,doubleb,doublee)
{
doublex1,x2,y1,x,y;
x1=a;
x2=b;
do{
x=(x1+x2)/2;
y=fun(x);
y1=fun(x1);
if((y<0&&y1<0)||(y>0&&y1>0))
x1=x;
else
x2=x;
/*endif*/
}while(fabs(y)>e);
returnx;
}
intmain(void)
{
doublem,n;
scanf("%f%f",&m,&n);
doublex=root(m,n,1e-8);
printf("%.2f\n",x);
return0;
}
19·你会存钱吗?
#include
#include
intmain()
{
inti8,i5,i3,i2,i1,n8,n5,n3,n2,n1;
floatmax=0,term;
for(i8=0;i8<3;i8++)/*穷举所有可能的存款方式*/
for(i5=0;i5<=(20-8*i8)/5;i5++)
for(i3=0;i3<=(20-8*i8-5*i5)/3;i3++)
for(i2=0;i2<=(20-8*i8-5*i5-3*i3)/2;i2++)
{
i1=20-8*i8-5*i5-3*i3-2*i2;
term=2000.0*pow((double)(1+0.0063*12),(double)i1)
*pow((double)(1+2*0.0063*12),(double)i2)
*pow((double)(1+3*0.0069*12),(double)i3)
*pow((double)(1+5*0.0075*12),(double)i5)
*pow((double)(1+8*0.0084*12),(double)i8);
/*计算到期时的本利合计*/
if(term>max)
{
max=term;n1=i1;n2=i2;n3=i3;n5=i5;n8=i8;
}
}
printf("%d",n8);
printf("%d",n5);
printf("%d",n3);
printf("%d",n2);
printf("%d\n",n1);
printf("%.2f",max);
/*输出存款方式*/
}
20·级数和
#include
#include
intmain()
{intj,t,i,a,n;
doubles=0;
scanf("%d",&n);
j=-1;i=1;t=1;
for(a=0;a{t=t*2;j*=-1;i*=-1;s=s+j*t/((t+i)*(2*t+j)+0.0);}
printf("%.6lf\n",s);
return0;
}
21·幸运数字7
#include
intmain()
{
intn,i;
scanf("%d",&n);//n不大于30000
if(n<7);
else{
for(i=7;i<=n;i++)
if(i%7==0||i%10==7||i/1000%10==7||i/100%10==7||i/10%10==7)
printf("%d",i);
}
return0;
}
22·粒子裂变
#include
intmain()
{
intn[100],m[100],t,i;
n[0]=1;
m[0]=0;
scanf("%d",&t);
for(i=1;i<=t;i++){
n[i]=m[i-1];
m[i]=3*n[i-1]+2*m[i-1];
}
printf("%d%d",n[t],m[t]);
return0;
}
23·特殊整数
#include
#include
#include
intmain()
{
intm,n,g=0,s=0,i,j,x,x1,x2;
scanf("%d%d",&m,&n);
x1=(int)(pow(10.0,n)/10);
x2=(int)(pow(10.0,n)-1);
for(i=x1;i<=x2;i++)
{
j=i;
do{
x=j%10;
if(x==m)
{
if(i%m!
=0)
g++,s=s+i;break;
}
elsej=j/10;
}while(j!
=0);
}
printf("%d%d\n",g,s);
return0;
}
24·最大乘积
#include
intmain()
{
intA[18],i,j,n,x,y=0;
scanf("%d",&n);
for(i=0;iscanf("%d",&A[i]);
for(i=0;i{
x=1;
for(j=i;j{
x=x*A[j];
if(x>y)y=x;
}
}
if(y>0)printf("%d",y);
elseprintf("-1");
return0;
}
25·解不等式
#include
intmain()
{
inta,b;
floatn,s=0,sum=0;
scanf("%d%d",&a,&b);
for(n=1;sum<=a;n++){
s=s+1/n;
sum=sum+1/s;
}
printf("%.0f",n=n-1);
for(n;sum<=b;n++){
s=s+1/n;
sum=sum+1/s;
}
printf("%.0f",n=n-1);
return0;
}
26·危险的组合
#include
#include
intmain()
{
intn;
intf(int);
scanf("%d",&n);
printf("%d",f(n));
return0;
}
intf(intn)
{
inta;
if(n==1||n==2)
a=0;
elseif(n==3)
a=1;
elseif(n==4)
a=3;
elsea=f(n-1)*2+pow(2,n-4)-f(n-4);
returna;
}
27·子序列的和
#include
#include
intmain()
{
intm,n,i;//ndoublea,sum=0;
scanf("%d%d",&n,&m);
for(i=n;i<=m;i++){
a=pow(i,2.0);
sum=sum+1/a;
}
printf("%.5lf",sum);
return0;
}
29·探索合数世纪
#include
intmain()
{
intn,i=500,s,x,count=0;
longj,k;
scanf("%d",&n);
while(count{
s=0;
for(j=i*100-99;j
{
x=0;
for(k=3;k*k<=j;k+=2)
if(j%k==0)
{
x=1;
break;
}
s+=x;
}
if(s==50)
count++;
i++;
}
printf("%d%d",j-101,j-2);
return0;
}
30·韩信点兵
include
intmain()
{
inta,b,c,n;//a<3,b<5,c<7
scanf("%d%d%d",&a,&b,&c);
for(n=10;n<=100;n++){
if((n-a)%3==0&&(n-b)%5==0&&(n-c)%7==0)
break;
}
if(n>100)printf("-1");
elseprintf("%d",n);
return0;
}
31·亲和数
#include
intfun(inta)
{
intb=0,i;
for(i=1;i<=a/2;i++)
{
if(a%i==0)
b+=i;
}
returnb;
}
intmain()
{
inta,b;
scanf("%d%d",&a,&b);
if(fun(a)==b&&fun(b)==a)
printf("YES");
elseprintf("NO");
return0;
}
32·高低交换
#include
inlineintxchg(unsignedcharn)
{
charleft=n<<4;
charright=n>>4;
returnleft+right;
}
intmain()
{
intn;
scanf("%d",&n);
n=xchg(n);
printf("%d",n);
return0;
}
33·循环移位
#include
intmove(intvalue,intn)
{
if(n==0)returnvalue;
elseif(n<0)
{
n=-n;
value=(value<>(32-n));
}
elsevalue=(value>>n)|(value<<(32-n));
returnvalue;
}
intmain()
{
intvalue,n;
scanf