西工大POJ100题(全新)(DOC)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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·THE CLOCK 57·合并字符串58·特殊要求的字符串59·字符串逆序60·COIN TEST 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·THE RATIO OF GAINERS TO LOSERS 91·GRAVEYARD
92·ARITHMETIC PROGRESSIONS 93·SCORING
94·HOUSEBOAT
97·BEE
98·CHECKSUM ALGORITHM
99·Hanoi 2
100·Specialized number
1·计算A+B
#include<stdio.h>
int main()
{
int a,b,sum;
scanf("%d %d",&a,&b);
sum=a+b;
printf("%d",sum);
}
2·圆及圆球等的相关计算
#include<stdio.h>
int main()
{
float r,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,v q,vz);
return 0;
}
3·计算成绩
#include <stdio.h>
int main()
{
float a,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);
return 0;
}
4·找最大数
#include<stdio.h>
int main()
{
int a,b,c,t;
scanf("%d %d %d",&a,&b,&c);
if (a<b) t=a,a=b;
if(a<c) t=a,a=c;
printf("%d",a);
return 0;
}
5·找幸运数
#include <stdio.h>
int main()
{
int i,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");
else printf("no\n");
return 0;
}
6·奖金发放
#include<stdio.h>
int main ()
{
float l;
scanf("%f",&l);
if (l<=10)l=l*0.1;
else if(l<=20)l=10*0.1+(l-10)*0.075;
else if(l<=40)l=10*0.1+10*0.075+(l-20)*0.05;
else
if(l<=60)l=10*0.1+10*0.075+20*0.05+(l-40)*0.03;
else
if(l<=100)l=10*0.1+10*0.075+20*0.05+20*0.03+(l-60)* 0.015;
else
l=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(l-100)* 0.01;
printf("%.6f",l);
return 0;
}
7·出租车费
#include<stdio.h>
#include<math.h>
int main()
{
float a,n,t;
scanf("%f",&a);
if (a<=2) n=7;
else if (a<=15) {
t=a-floor(a);
if(t==0)n=7+(floor(a)-2)*1.5;
else n=7+(floor(a)-1)*1.5;
}
else {
t=a-floor(a);
if(t==0) n=7+13*1.5+(floor(a)-15)*2.1;
else n=7+13*1.5+(floor(a)-14)*2.1;} printf("%.6f",n);
return 0;
}
8·是该年的第几天
#include<stdio.h>
int main()
{
int y,m,d,n,a;
scanf("%d-%d-%d",&y,&m,&d);
if((y%4==0&&y%100!=0)||(y%400==0)) a=29;
else a=28;
switch(m)
{
case 1:n=d;break;
case 2:n=31+d;break;
case 3:n=31+a+d;break;
case 4:n=62+a+d;break;
case 5:n=92+a+d;break;
case 6:n=123+a+d;break;
case 7:n=153+a+d;break;
case 8:n=184+a+d;break;
case 9:n=215+a+d;break;
case 10:n=245+a+d;break;
case 11:n=276+a+d;break;
case 12:n=306+a+d;break;
}
printf("%d",n);
return 0;
}
9·成绩转换
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
if(n<60)printf("E\n");
else if(n<70)printf("D\n");
else if(n<80)printf("C\n");
else if(n<90)printf("B\n");
else printf("A\n");
return 0;
}
10·求建筑高度
#include<stdio.h>
int main()
{
float x,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");
else printf("0");
return 0;
}
11·区间内素数
#include<stdio.h>
#include<math.h>
int main()
{
int i,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);
return 0;
}
12·计算π
#include<stdio.h>
#include<math.h>
int main()
{
int s=1;
double pi=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);
return 0;
}
13·两个整数之间所有的素数
#include<stdio.h>
int main()
{
int a,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++;
}
return 0;
}
14·最次方数
#include<stdio.h>
int main()
{
int x,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);
return 0;
}
15·自然数立方的乐趣
#include<stdio.h>
int main()
{
int n,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;i<n;i++){
printf("%d+",a);
a=a+2;}
printf("%d",a);
return 0;
}
16·五猴分桃
#include<stdio.h>
int divides(int n,int m)
{
if (n/5==0||n%5!=1)return 0;
if (m==1)return 1;
return divides(n-n/5-1,m-1);
}
int main()
{
int n,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);
return 0;
}
17·完全数
#include<stdio.h>
int main()
{
int i,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;i<n/2;i++)
if(n%i==0)printf("%d+",i);
i=n/2;
printf("%d\n",i);}
}
return 0;
}
18·二分求根
#include<math.h>
#include<stdio.h>
double fun(double x) {return 2*x*x*x-4*x*x+3*x-6;} double root(double a,double b,double e)
{
double x1,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;
/*end if*/
}while(fabs(y) > e);
return x;
}
int main(void)
{
double m,n;
scanf("%f %f",&m,&n);
double x=root(m,n,1e-8);
printf("%.2f\n",x);
return 0;
}
19·你会存钱吗?
#include<stdio.h>
#include<math.h>
int main()
{
int i8,i5,i3,i2,i1,n8,n5,n3,n2,n1;
float max=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<stdio.h>
#include<math.h>
int main()
{ int j,t,i,a,n;
double s=0;
scanf("%d",&n);
j=-1; i=1; t=1;
for (a=0;a<n;a++)
{t=t*2; j*=-1; i*=-1; s=s+j*t/((t+i)*(2*t+j)+0.0);}
printf("%.6lf\n",s);
return 0;
}
21·幸运数字7
#include<stdio.h>
int main()
{
int n,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);
}
return 0;
}
22·粒子裂变
#include<stdio.h>
int main()
{
int n[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]); return 0;
}
23·特殊整数
#include<stdio.h>
#include <stdlib.h>
#include<math.h>
int main()
{
int m,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;
}
else j=j/10;
}while(j!=0);
}
printf("%d %d\n",g,s);
return 0;
}
24·最大乘积
#include<stdio.h>
int main()
{
int A[18],i,j,n,x,y=0;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&A[i]);
for(i=0;i<n;i++)
{
x=1;
for(j=i;j<n;j++)
{
x=x*A[j];
if(x>y) y=x;
}
}
if(y>0)printf("%d",y);
else printf("-1");
return 0;
}
25·解不等式
#include<stdio.h>
int main()
{
int a,b;
float n,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); return 0;
}
26·危险的组合
#include<stdio.h>
#include<math.h>
int main()
{
int n;
int f(int);
scanf("%d",&n);
printf("%d",f(n));
return 0;
}
int f(int n)
{
int a;
if(n==1||n==2)
a=0;
else if(n==3)
a=1;
else if(n==4)
a=3;
else a=f(n-1)*2+pow(2,n-4)-f(n-4);
return a;
}
27·子序列的和
#include<stdio.h>
#include<math.h>
int main()
{
int m,n,i; //n<m<1000000
double a,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);
return 0;
}
29·探索合数世纪
#include<stdio.h>
int main()
{
int n,i=500,s,x,count=0;
long j,k;
scanf("%d",&n);
while(count<n)
{
s=0;
for(j=i*100-99;j<i*100;j+=2)
{
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);
return 0;
}
30·韩信点兵
include<stdio.h>
int main()
{
int a,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");
else printf("%d ",n);
return 0;
}
31·亲和数
#include<stdio.h>
int fun(int a)
{
int b=0,i;
for(i=1;i<=a/2;i++)
{
if(a%i==0)
b+=i;
}
return b;
}
int main()
{
int a,b;
scanf("%d %d",&a,&b);
if(fun(a)==b&&fun(b)==a)
printf("YES");
else printf("NO");
return 0;
}
32·高低交换
#include<stdio.h>
inline int xchg(unsigned char n) {
char left=n<<4;
char right=n>>4;
return left+right;
}
int main()
{
int n;
scanf("%d",&n);
n=xchg(n);
printf("%d",n);
return 0;
33·循环移位
#include<stdio.h>
int move(int value,int n)
{
if(n==0) return value;
else if(n<0)
{
n=-n;
value=(value<<n)|(value>>(32-n));
}
else value=(value>>n)|(value<<(32-n));
return value;
}
int main()
{
int value,n;
scanf("%d %d",&value,&n);
value=move(value,n);
printf("%d",value);
return 0;
35·组合数
#include<stdio.h>
int C(int m,int n)
{
int i,p=1;
for (i=1;i<=n;i++)
p*=(m+1-i)/(double)i;
return p;
}
int main()
{
int m,n,t;
scanf("%d %d",&m,&n);
if(n>m) printf("wrong\n");
else {
t=C(m,n);
printf("%d\n",t);
}
return 0;
}
36·积分计算
#include<stdio.h>
double f(double x)
{
return 1.0/(1.0+x*x);
}
double jf(double a,double b) {
double h,s=0;;
int i;
h=(b-a)/5000000;
for(i=1;i<5000000;i++)
{
s+=(f(a)+f(a+h))*0.5*h;
a+=h;
}
return s;
}
int main()
{
double a,b,s;
scanf("%lf%lf",&a,&b); s=jf(a,b);
printf("%lf",s);
return 0;
}
37·数据加密
#include<stdio.h>
int fun(int n)
{
return (n+5)%10;
}
int main()
{
int a,b[4],i=0;
scanf("%d",&a);
while(a)
{
b[i]=fun(a%10);
a/=10;
i++;
}
a=b[0]*1000+b[1]*100+b[2]*10+b[3]; printf("%d",a);
return 0;
}
38·获取指定二进制位
#include <stdio.h>
int getbit(int n,int k)
{
int count=0;
while(1)
{
count++;
if(count==k)
break;
n/=2;
}
return n%2;
}
int main()
{
int n,k;
scanf("%d %d",&n,&k);
k=getbit(n,k);
printf("%d",k);
return 0;
}
39·ACKERMAN
#include<stdio.h>
int ack(int m,int n)
{
if(m==0) return n+1;
else if(n==0) return ack(m-1,1); else return ack(m-1,ack(m,n-1)); }
int main()
{
int m,n;
scanf("%d %d",&m,&n);
m=ack(m,n);
printf("%d",m);
return 0;
}
40·不会吧,又是A+B
#include<stdio.h>
int main()
{
int a1,a2,a3,b1,b2,b3,a,b,c;
scanf("%d %d %d %d %d %d",&a1,&a2,&a3,&b1,&b2,&b3); c=(a3+b3)%60;
b=(a2+b2+(a3+b3)/60)%60;
a=a1+b1+((a3+b3)/60+a2+b2)/60;
printf("%d %d %d ",a,b,c);
return 0;
}
41·平均值函数
#include<stdio.h>
double avg(int A[],int s,int e)
{
int i;
double t,sum;
for(i=s;i<=e;i++)
sum+=A[i];
t=sum/(e-s+1);
return t;
}
int main()
{
int n,s,e,i,A[100];
double t;
scanf("%d\n",&n);
for(i=0;i<n;i++)
scanf("%d ",&A[i]);
scanf("%d %d",&s,&e);
t=avg(A,s,e);
printf("%f",t);
return 0;
}
42·插入排序
#include<stdio.h>
void InsertionSort(int a[],int s,int m) {
int t,i,j,k;
for(i=0;i<m;i++){
for(j=s+1;j<s+m-i;j++){
t=a[j];k=j-1;
while(t>a[k]){
a[k+1]=a[k];k--;
if(k==(s-1))break;
}
a[k+1]=t;
}
}
}
int main()
{
int n,a[100],i,s,m;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
scanf("%d %d",&s,&m);
InsertionSort(a,s,m);
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
43·一维数组赋值
#include<stdio.h>
int main()
{
int A[100],B[100],i,n;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&A[i]);
for(i=0;i<n;i++){
B[i]=A[i];
if(i%2!=0)printf("%d ",B[i]);
}
return 0;
}
44·右下角
#include<stdio.h>
int main()
{
int n,a[10][10],i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++){
for(j=0;j<n;j++)
{if(j<=n-i-2)printf(" "); else printf("%d ",a[i][j]);} printf("\n");
}
return 0;
}
45·右上角
#include<stdio.h>
int main()
{
int n,a[10][10],i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++){
for(j=0;j<n;j++)
{if(j>=i)printf("%d ",a[i][j]); else printf(" ");}
printf("\n");
}
return 0;
}
46·山迪的麻烦
#include<stdio.h>
int main()
{
int n,count=0,i,j,a[100],k;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=1;i<n;i++)
{
k=a[i];
for(j=i-1;j>=0&&k<a[j];j--)
{
count++;
a[j+1]=a[j];
}
a[j+1]=k;
}
printf("%d\n",count);
return 0;
}
47·冒泡排序
#include<stdio.h>
void BubbleSort(int a[],int s,int m) {
int t,i,j;
for(i=0;i<m-1;i++){
for(j=s;j<s+m-i-1;j++)
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
int main()
{
int n,a[100],i,s,m;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
scanf("%d %d",&s,&m);
BubbleSort(a,s,m);
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
48·恐怖水母
#include<stdio.h>
int main()
{
int n,m,i,j,a[100],b[100],t,sum=0; scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<m;i++)
scanf("%d",&b[i]);
for(i=0;i<n-1;i++){
for(j=0;j<n-1-i;j++)
if(a[j]>a[j+1]){
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i=0;i<m-1;i++){
for(j=0;j<m-1-i;j++)
if(b[j]>b[j+1])
{
t=b[j];
b[j]=b[j+1];
b[j+1]=t;
}
}
for(i=0,j=0;i<n&&j<m;j++){
if(a[i]<=a[j])
{
sum+=b[j];
i++;
}
}
printf("%d\n",sum);
return 0;
}
49·左上角
#include<stdio.h>
int main()
{
int n,a[10][10],i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]); for(i=0;i<n;i++){
for(j=0;j<n-i;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
50·一维数组加法
#include<stdio.h>
int main()
{
int A[100],B[100],C[100],n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&A[i]);
for(i=0;i<n;i++)
scanf("%d",&B[i]);
for(i=0;i<n;i++){
C[i]=A[i]+B[i];
printf("%d ",C[i]);
}
return 0;
}
51·字符串排序
#include<stdio.h>
#include<string.h>
int main()
{
char str[10][10];
int i,j;
char t[10];
for(i=0;i<10;i++)
{
scanf("%s",str[i]);
}
for(i=0;i<10;i++)
{
for(j=0;j<10-i;j++)
{
if(strcmp(str[j],str[j+1])>0) {
strcpy(t,str[j]);
strcpy(str[j],str[j+1]);
strcpy(str[j+1],t);
}
}
}
for(i=0;i<10;i++)
printf("%s ",str[i]);
return 0;
}
52·字符串左中右
#include<stdio.h>
#include<string.h>
void Left(char str[],int n,char dest[]) {
int i;
for(i=0;i<n;i++)
dest[i]=str[i];
}
void Right(char str[],int n,char dest[]) {
int i,m,j=0;
m=strlen(str);
for(i=m-n;i<=m;i++)
{。

相关文档
最新文档