赞
踩
目录
- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- printf("Hello World\n");
- return 0;
- }
- #include <stdio.h>
- #include <stdlib.h>
-
- int main()
- {
- int a,b,c;
- scanf("%d %d",&a,&b);
- c=a+b;
- printf("%d",c);
- return 0;
- }
本题纯纯水题,繁琐的要死。不过通过本题可以学会sizeof()的用法还有_MIN和_MAX的用法。
注意要点:
1、无符号类型的数据最小值是0,可以直接输出。
2、要注意printf中引号内部和外部的字符类型得一一对应。
3、除了用if语句的话还可以用switch语句,感觉更为方便。
- #include <stdio.h>
- #include <limits.h>
-
- int main()
- {
- int a;
- scanf("%d",&a);
- if(a==1) printf("%d,%d,%d",sizeof(char),CHAR_MIN,CHAR_MAX);
- if(a==2) printf("%d,0,%u",sizeof(unsigned char),UCHAR_MAX);
- if(a==3) printf("%d,%d,%d",sizeof(short),SHRT_MIN,SHRT_MAX);
- if(a==4) printf("%d,0,%u",sizeof(unsigned short),USHRT_MAX);
- if(a==5) printf("%d,%d,%d",sizeof(int),INT_MIN,INT_MAX);
- if(a==6) printf("%d,0,%u",sizeof(unsigned int),UINT_MAX);
- if(a==7) printf("%d,%ld,%ld",sizeof(long),LONG_MIN,LONG_MAX);
- if(a==8) printf("%d,0,%lu",sizeof(unsigned long),ULONG_MAX);
- if(a==9) printf("%d,%lld,%lld",sizeof(long long),LLONG_MIN,LONG_MAX);
- if(a==10) printf("%d,0,%llu",sizeof(unsigned long long),ULONG_MAX);
- return 0;
- }
注意本题得用long long int的类型!!!int类型的字节过不了!!!(导致我交了5次才过!!!)
- #include <stdio.h>
- #include <stdlib.h>
-
- int main()
- {
- long long int a,b,c;
- scanf("%lld %lld",&a,&b);
- c=(a+b)/2;
- printf("%lld",c);
- return 0;
- }
通过本题可以学会在我们输出时如何进行进制转换。
- #include <stdio.h>
- #include <stdlib.h>
-
- int main()
- {
- int a;
- scanf("%d",&a);
- printf("%X,%o",a,a);
- return 0;
- }
- #include <stdio.h>
- #include <stdlib.h>
-
- int main()
- {
- double a;
- scanf("%lf",&a);
- printf("%.6lf,%.2lf,%.8lf",a,a,a);
- return 0;
- }
- #include <stdio.h>
- #include <stdlib.h>
-
- int main()
- {
- long long m,n,a;
- int w=0;
- scanf("%lld %lld",&m,&n);
- a=m;//获取m的位数
- while(a!=0)
- {
- w++;
- a=a/10;
- }
- if(n>w)
- {
- for(int i=1;i<=(n-w);i++)
- {
- printf("0");
- }
- printf("%lld",m);
- }
- else
- {
- printf("%d",m);
- }
- return 0;
- }
本题要注意进行弧度制的转化。
- #include <stdio.h>
- #include <math.h>
- #define PI 3.1415926535
-
- int main()
- {
- double x,y,m,n,a,b,h,d,r=6371;
- scanf("%lf %lf\n%lf %lf",&x,&y,&m,&n);
- x=x*PI/180;
- y=y*PI/180;
- m=m*PI/180;
- n=n*PI/180;
- a=(1-cos(x-m))/2;
- b=(1-cos(y-n))/2;
- h=a+cos(x)*cos(m)*b;
- d=(acos(1-2*h))*r;
- printf("%.4lfkm",d);
- return 0;
- }
本题能够学会round函数,其主要作用是对数值进行四舍五入的操作。
- #include <stdio.h>
- #include <math.h>
-
- int main()
- {
- double v,T,c;
- double a;
- scanf("%lf %lf",&v,&T);
- a=pow(v,0.16);
- c=13.12+0.6215*T-11.37*a+0.3965*T*a;
- c=round(c);//对于数值进行四舍五入。
- printf("%.0lf",c);
- return 0;
- }
当时写的时候感觉写的有点不整齐,所以就format了一下,导致程序变得很长,不过还是很好理解的,而代码中的255的数据是可以从网上自行查询。
- #include <stdio.h>
- #include <math.h>
-
- int main()
- {
- double r,g,b,a,c,v,s,h;
- scanf("%lf %lf %lf",&r,&g,&b);
- r=r/255.0;
- g=g/255.0;
- b=b/255.0;
- a=g;
- c=g;
- if(r>a) a=r;
- if(b>a) a=b;
- if(r<c) c=r;
- if(b<c) c=b;
- v=a*100;
- if(v==0)
- {
- s=0;
- }
- else
- {
- s=(a-c)/a;
- }
- s=s*100;
- if(a==r)
- {
- h=(0+(g-b)/(a-c))*60;
- }
- else if(a==g)
- {
- h=(2+(b-r)/(a-c))*60;
- }
- else if(a==b)
- {
- h=(4+(r-g)/(a-c))*60;
- }
- if(h<0)
- {
- h=h+360;
- }
- else
- {
- h=h;
- }
- printf("%.4lf,%.4lf%%,%.4lf%%",h,s,v);
- return 0;
- }
本题还是挺繁琐的,因此调用了一个约分的函数。而对于分数的约分主要有两种方法:1、辗转相除法(其实就是从两个数中取一个数,然后通过遍历的方法依次减小来求最大公约数,然后再将两个数同时除以最大公约数就解决了!!!,本代码主要用的便是这个方法)2、更相减损术(这个方法来源于《九章算术》,可以自行查阅,本人也没太搞明白哈哈哈哈哈......)
- #include <stdio.h>
- #include <math.h>
-
- int yuefen(int e,int f)
- {
- int n;
- n=abs(e);
- for(e,f,n;n>=1;n--)
- {
- if(e%n==0&&f%n==0)
- break;
- }
- return n;
- }
-
- int main()
- {
- int a,b,c,d;
- int e,f;
- int m;
- scanf("%d/%d\n%d/%d",&a,&b,&c,&d);
- e=b*d;
- f=a*d+b*c;
- m=yuefen(e,f);
- if(e*f<0)
- { e=abs(e);
- f=abs(f);
- printf("(%d/%d)+(%d/%d)=-%d/%d\n",a,b,c,d,f/m,e/m);
- }
- else
- {
- e=abs(e);
- f=abs(f);
- printf("(%d/%d)+(%d/%d)=%d/%d\n",a,b,c,d,f/m,e/m);
- }
- e=b*d;
- f=a*d-c*b;
- m=yuefen(e,f);
- if(e*f<0)
- { e=abs(e);
- f=abs(f);
- printf("(%d/%d)-(%d/%d)=-%d/%d\n",a,b,c,d,f/m,e/m);
- }
- else
- {
- e=abs(e);
- f=abs(f);
- printf("(%d/%d)-(%d/%d)=%d/%d\n",a,b,c,d,f/m,e/m);
- }
- e=b*d;
- f=a*c;
- m=yuefen(e,f);
- if(e*f<0)
- { e=abs(e);
- f=abs(f);
- printf("(%d/%d)*(%d/%d)=-%d/%d\n",a,b,c,d,f/m,e/m);
- }
- else
- {
- e=abs(e);
- f=abs(f);
- printf("(%d/%d)*(%d/%d)=%d/%d\n",a,b,c,d,f/m,e/m);
- }
- e=b*c;
- f=a*d;
- m=yuefen(e,f);
- if(e*f<0)
- { e=abs(e);
- f=abs(f);
- printf("(%d/%d)/(%d/%d)=-%d/%d\n",a,b,c,d,f/m,e/m);
- }
- else
- {
- e=abs(e);
- f=abs(f);
- printf("(%d/%d)/(%d/%d)=%d/%d\n",a,b,c,d,f/m,e/m);
- }
- return 0;
- }
本题利用了循环嵌套,只要理解了就挺简单的。
- #include <stdio.h>
- #include <stdlib.h>
-
- int main()
- {
- long a,b,c,d,e,i=0;
- scanf("%ld",&e);
- for(a=0;a<=9;a++)
- for(b=0;b<=9;b++)
- for(c=0;c<=9;c++)
- for(d=0;d<=9;d++)
- if(a+b+c+d==e) i++;
- printf("%ld",i);
- return 0;
- }
如果直接运算a*b的话会超出数据范围,因此在网上查了个计算数模的方法,就是两个数的的乘积a*b mod m=(a mod m)*(b mod m) mod m,这样的话可以防止数据超出范围。
- #include <stdio.h>
- #include <stdlib.h>
-
- int main()
- {
- long long a,b,m,n;
- scanf("%lld %lld %lld",&a,&b,&m);
- n=(a%m)*(b%m)%m;
- printf("%lld",n);
- return 0;
- }
- #include <stdio.h>
- #include <stdlib.h>
-
- int main()
- {
- double m;
- int i,j,k;
- scanf("%lf",&m);
- if(m!=0)
- {
- int n=0;
- for(m,n,i=0;n!=m;i++)
- {
- m=m*10;
- n=(int)m;
- }
- int l=(int)m;
- k=l;
- for(j=1,i; i>=1; i--)
- j=j*10;
- for(j,l,k; k>=1; k--)
- {
- if(l%k==0&&j%k==0)
- break;
- }
- printf("%d/%d",l/k,j/k);
- }
- else printf("0");
- return 0;
- }
- #include<stdio.h>
- #include<stdlib.h>
- unsigned int beishuhe(unsigned int i)
- {
-
- unsigned int j=0;
- i=i-1;
- for(i;i>=1;i--)
- {
- if(i%3==0||i%5==0)
- j=i+j;
- }
- return j;
- }
-
- int main()
- {
- long int t;
- scanf("%ld",&t);
- unsigned int j[100000];
- for(unsigned int n=0;n<t;n++)
- {
- unsigned int i;
- scanf("%u",&i);
- j[n]=beishuhe(i);
- }
- for(unsigned int n=0;n<t;n++)
- {
- printf("%u\n",j[n]);
- }
- return 0;
- }
- #include <stdio.h>
- #include <stdlib.h>
-
- int main()
- {
- int i;
- int j=0,m=0,n,t=0;
- scanf("%d",&i);
- for(;i>0;i--)
- {
- for(t;t>0;t--)
- printf("%d ",t);
- for(n=0;n<i;n++)
- printf("%d ",n);
- printf("\n");
- m++;
- t=m;
- n=j;
- }
- return 0;
- }
- #include <stdio.h>
-
- int main()
- {
- int m,n=0;
- scanf("%d",&m);
- int t=0,l=0;
- for(int i=m;i>0;l++)
- {
- for(;m!=0;m=m/10)
- {
- n=m%10;
- t=t+n;
- }
- i=i-t;
- m=i;
- t=0;
- }
- printf("%d",l);
- return 0;
- }
- #include <stdio.h>
- #include <stdlib.h>
-
- int main()
- {
- double i=1.2;
- double t=12,z=12;
- double s=11;
- int m;
- int n=2;
- scanf("%d",&m);
- printf("%.1lf",i);
- for(;n<=8&&n<=m;n++)
- {
- z=z+s;
- t=t+z;
- printf("+%.1lf",z/10);
- }
- if(n==9)
- {
- printf("+9.1");
- n++;
- t=t+91;
- }
- t=t*10;
- z=910;
- s=101;
- for(;n>=10&&n<=m&&n<=98;n++)
- {
- z=z+s;
- t=t+z;
- printf("+%.2lf",z/100);
- s=101;
- }
- if(n==99)
- {
- printf("+99.100");
- t=t+9910;
- }
- t=t/100;
- printf("=%.2lf",t);
- return 0;
- }
本题有个大坑!!!我当时其他数字感觉都是正确的,但是就是一直WA,最后才发现原来是当输入的第一个数字是0的时候,结果直接输出0就可以了!!!不用再输出原来的两个数。而当输入的第一个数字不是0的时候,也要注意在输出的时候要把最开始的输入的两个数字也整出来,这样才符合NOJ的输出条件。(开始也没注意到这个问题,导致一直WA),不过后来注意到了之后就直接AC了捏。
- #include <stdio.h>
- #include <stdlib.h>
-
- int main()
- {
- long int i,j;
- scanf("%ld %ld",&i,&j);
- long int t=0;
- if(i%2!=0) t=j;
- else t=0;
- if(i!=0) printf("%ld %ld\n",i,j);
- while(i>1)
- {
- i=i/2;
- printf("%ld ",i);
- j=j*2;
- printf("%ld\n",j);
- if(i%2!=0)
- t=t+j;
- }
- printf("%ld",t);
- return 0;
- }
循环内部的嵌套,想明白了就行。
- #include <stdio.h>
- #include <stdlib.h>
-
- int main()
- {
- int j,i=0;
- int t=1,n=0,m=0;
- scanf("%d",&j);
- for(;j>=1;j--)
- {
- for(;t<=j;t++)
- {
- int k=t;
- for(;k<=j;k++)
- {
- m=m+k;
- if(m==j) i++;
- }
- if((k-1)==j)
- {
- m=0;
- }
- }
-
- }
- printf("%d",i);
- return 0;
- }
很简单的一道题,看代码应该就看得懂了。
- #include <stdio.h>
- #include <stdlib.h>
-
- int main()
- {
- int i,j;
- int t=0;
- scanf("%d %d",&i,&j);
- for(;i>=1;i--)
- {
- t=t+(j%i);
- }
- printf("%d",t);
- return 0;
- }
本题得优化算法,如果让三个变量都遍历去求的话会TE超时,因此我们首先可以通过三者变量之和为一个定值,这样的话只用遍历两个变量即可求出第三个变量的值。还有就是如果a*a+b*b=c*c的话那么c一定不可能与a,b两个值相等,而且一旦我们所输入的n的值大于二之后,那么a,b,c的值都不可能超过n/2,因此可进一步减少遍历次数防止TE超时错误。代码如下:
- #include <stdio.h>
- #include <math.h>
-
- int main()
- {
- unsigned long long i=1,j=1,m=1,n;
- unsigned long long k=0;
- scanf("%llu",&n);
- for(; i<=(n/2); i++)
- for(j=i; j<=(n/2); j++)
- {
- m=n-i-j;
- if(i*i+j*j==m*m&&i+j+m==n)
- {
- k=i*j*m;
- printf("%llu\n",k);
- break;
- }
- }
- return 0;
- }
此题思路还是挺简单的,就是步骤有点点繁琐,而且有一些小的细节需要去注意,本人当时写的时候脑子昏特了,定义的变量太多,还望见谅。不过代码可以AC,其实也可以优化所定义的变量的字母的个数从而看起来更方便。
- #include <stdio.h>
- #include <stdlib.h>
- int quwei(int x)
- {
- int m=x;
- int k=0;
- while(m!=0)
- {
- m=m/10;
- k++;
- }
- return k;
- }
-
- int main()
- {
- int i,j,m=0;
- int w=0,z=0,y=0,f[10000],l[10000];
- scanf("%d %d",&i,&j);
- m=i*j;
- w=quwei(i);
- z=quwei(j);
- y=quwei(m);
- int x=y+1-w;
- int s=y+1-z;
- int c=y+1;
- int d=c;
- int t=1;
- for(;x>0;x--)
- {
- printf(" ");
- }
- printf("%d\n",i);
- printf("x");
- for(;s>1;s--)
- {
- printf(" ");
- }
- printf("%d\n",j);
- for(;c>0;c--)
- {
- printf("-");
- }
- printf("\n");
- for(;t<=z;t++)
- {
- f[t]=j%10;
- j=j/10;
- }
- int k=1;
- for(int v=1;k<z;k++)
- {
- v=1;
- t=k;
- if(f[t]*i==0)
- {
- for(;v<=(d-k);v++)
- {
- printf(" ");
- }
- printf("0\n");
- }
- else
- {
- for(;v<=(d-k-w+1);v++)
- {
- printf(" ");
- }
- printf("%d\n",f[k]*i);
- }
- }
- printf("+%d\n",f[z]*i);
- for(;d>0;d--)
- {
- printf("-");
- }
- printf("\n");
- printf(" %d",m);
- return 0;
- }
用数组来写吧,废话不多说,看代码!!!
- #include <stdio.h>
- #include <stdlib.h>
- int tiaojian(int n)
- {
- int j[1000];
- int m=n;
- int k=0,l=0;
- while(m!=0)
- {
- m=m/10;
- k++;
- }
- for(;k>0;k--,l++)
- {
- j[l]=n%10;
- n=n/10;
- }
- for(int t=0;t<l-1;t++)
- {
- if(j[t]<j[t+1])
- return 0;
- }
- return 1;
- }
-
- int main()
- {
- int n,x=0;
- scanf("%d",&n);
- for(;n>=1;n--)
- {
- x=tiaojian(n);
- if(x==1)
- {
- printf("%d",n);
- break;
- }
- }
- return 0;
- }
本人认为挺简单的,不过要用数学思维,就相当于从1加到x,使得总和(1+2+...+x)小于输入的n,然后再用n减去该总和即为所求(本人考的更注重的是数学思维吧)(代码可直接AC)
- #include <stdio.h>
- #include <stdlib.h>
-
- int main()
- {
- int i,j=0,m=1;
- int t=0;
- int w=0;
- scanf("%d",&i);
- while(j<i)
- {
- j=m+j;
- m++;
- }
- m=m-2;
- for(;m>=1;m--)
- {
- w=w+m;
- }
- int l=i-w;
- printf("%d",l);
- return 0;
- }
明明考的是循环,但不理解为什么要放在函数的题组里面!!!
- #include <stdio.h>
- #include <stdlib.h>
-
- int main()
- {
- int i;
- scanf("%d",&i);
- printf("%d ",i);
- while(i!=1)
- {
- if(i%2==0)
- {
- i=i/2;
- printf("%d ",i);
- }
- else
- {
- i=i*3+1;
- printf("%d ",i);
- }
- }
- return 0;
- }
本题引入了一个新的函数<stdarg.h>,感觉自己悟性不够,最开始单纯看NOJ上的题目介绍很难理解,因此就查找了很多文章,也找到了一篇很好的而且通俗易懂的文章可以帮助理解,文章作者是zldeng_scir,文章名称为:va_list使用方法,建议多读文字内容并同时复制源代码后编译有助于理解<stdarg.h>函数!!!
- #include<stdio.h>
- #include<stdarg.h>
-
- double average(double n, ...)
- {
- int i = 0;
- double sum = 0;
- va_list arg;
- va_start(arg, n);
-
-
- for(i=0; i<n; i++)
- {
- sum =sum+va_arg(arg, double);
- }
- return sum/n;
- va_end(arg);
- }
- int main()
- {
- double a,b,c,d,e;
- scanf("%lf %lf %lf %lf %lf",&a,&b,&c,&d,&e);
- double avg1 = average(2, a, b);
- double avg2 = average(3, c, d, e);
- printf("%.4lf",avg1-avg2);
- return 0;
- }
本题类似于可变参数平均,如果想知道的更具体的话,可参考可变参数平均的内容
- #include <stdio.h>
- #include <stdarg.h>
- int sum(int n,...)
- {
- va_list sum;
- va_start(sum,n);
- int r=0;
- for(int i=1;i<n;i++)
- {
- r=r+va_arg(sum,int);
- }
- va_end(sum);
- return r;
-
- }
-
- int main()
- {
- int a,b,c,d,e,f;
- scanf("%d %d %d %d %d %d",&a,&b,&c,&d,&e,&f);
- int sum1=sum(3,a,b,0);
- int sum2=sum(5,c,d,e,f,0);
- printf("%d",sum1-sum2);
- return 0;
- }
本来以为很简单的,但是有些情况不全面,所以就写了一个半小时,还好直接AC了,本题主要思路还是用数组来写(其实如果想找到更大的基思数的话也可以把数组大小调到更大,但如果单纯想通过NOJ的话其实1000就已经足够了)
- #include <stdio.h>
- #include <stdlib.h>
- int panduan(int n)
- {
- int i=0;
- int k=n;
- int f=n;
- int j[1000];
- while(k!=0)
- {
- k=k/10;
- i++;
- }
- int w=i-1;
- for(;w>=0;w--)
- {
- j[w]=f%10;
- f=f/10;
- }
- int v=i;
- int y;
- for(;v<999;v++)
- {
- for(j[v]=0,y=1;y<=i;y++)
- {
- j[v]=j[v]+j[v-y];
- }
- }
- int s=0;
- for(;s<1000;s++)
- {
- if(j[s]==n)
- return 1;
- }
- return 0;
- }
-
-
- int main()
- {
- int n,y;
- scanf("%d",&n);
- y=panduan(n);
- if(y==1) printf("Yes");
- else printf("No");
- }
方法一:直接用数组写(非常方便而且不用考虑题目中的要求便可以直接AC)
-
- #include <stdio.h>
- #include <stdlib.h>
- int oushu(int n,int j[])
- {
- int z=0;
- for(;z<=(n-2);z++)
- {
- j[z+2]=j[z]+2*j[z+1];
- }
- return j[n];
- }
-
- int main()
- {
- int k,r=0;
- int j[100000];
- scanf("%d",&k);
- j[0]=0;
- j[1]=1;
- r=oushu(k,j);
- printf("%d",r);
- return 0;
- }
-
-
方法二:根据题中所要求的调用函数去写,从中可以学到递归和递推的思路(但其实第一种方法里的数组也是一种递推思想,只不过数组的话相比于调用函数来说更为简便一些)(该方法尝试过后也可以直接AC)
- #include <stdio.h>
- #include <stdlib.h>
- int jishu(int k)
- {
- if(k==0) return 0;
- else if(k==1) return 1;
- return 2*jishu(k-1)+jishu(k-2);
- }
- int oushu(int k)
- {
- int p0=0,p1=1,pk,i=0;
- int r=0;
- for(;i<=k;i++)
- {
- if(i==0) pk=p0;
- else if(i==1) pk=p1;
- else
- {
- pk=2*p1+p0;
- p0=p1;
- p1=pk;
- }
- }
- return pk;
- }
-
- int main()
- {
- int k,r=0;
- scanf("%d",&k);
- if(k%2==0) printf("%d",oushu(k));
- else printf("%d",jishu(k));
- return 0;
- }
开始没理解题意,以为要一直除到最后等于1了才算哈沙德数,导致第一变提交的程序直接WA了,但是后来查询资料了才知道只要是能够一个数字n能满足除以各个位数上的数字之和后能够得到整数,那么n便是哈沙德数,然后改了下程序就AC了(但始终不理解NOJ上给了个inline int函数定义是啥意思,还差了半天发现压根用不上inline int这种内联函数。不过看了很多关于inline int的文章现在还是有点搞不明白,如果哪位大佬懂得话希望能够私信我,给我讲解讲解)
- #include <stdio.h>
- #include <stdlib.h>
- int HarshadNumber(int n)
- {
- int t=n,s=0;
- while(t!=0)
- {
- s=s+t%10;
- t=t/10;
- }
- if(s&&n%s==0) return n/s;
- return 0;
- }
-
- int main()
- {
- int n;
- int r=0;
- int k=0;
- scanf("%d",&n);
- while(n!=1)
- {
- r=HarshadNumber(n);
- n=r;
- if(r==0) break;
- k++;
- }
- printf("%d",k);
- return 0;
- }
显然,题目给了三种求素数的方法,肯定是不想让我们用遍历的方法去求素数,如果一个一个遍历去判断的话会TE超时,因此要结合第二种和第三种方法。具体思路来源于文章(方法四):判断一个数是否为质数(素数)的4种方法
- #include <stdio.h>
- #include <math.h>
- int sushu(int t)
- {
- int l=2;
- for(;l<=sqrt(t);l++)
- {
- if(t%l==0) return 0;
- }
- return 1;
- }
-
- int main()
- {
- int i,j;
- int k=1;
- int f=0;
- scanf("%d %d",&i,&j);
- int t=i;
- if(t==1) t++;//如果出现t=1的情况会使得调用的功能函数直接跳到return 1导致结果多一种情况,因此直接跳过1的这种情况,因为1本来就不是素数
- if(t>=1&&t<=5)
- {
- while(t<=j)
- {
- if(k==sushu(t)) f++;
- t++;
- }
- }
- else
- {
- for(;t<=j;t++)
- {
- if(t%6==1||t%6==5)
- if(k==sushu(t)) f++;
- }
- }
- printf("%d",f);
- return 0;
- }
首先得学会最小二乘法的计算,可自行在网上搜索相关计算。其次就是要通过循环将多个数字存放在数组中从而便于后面的计算。其他的倒没啥新鲜的东西了。
- #include <stdio.h>
- #include <stdlib.h>
-
- int main()
- {
- int n;
- int i,m;
- int k=1;
- double l=0;
- double u=0;
- int j[1000][2];
- scanf("%d",&n);
- for(;n!=0;n--)
- {
- scanf("%d %d",&i,&m);
- j[k][0]=i;
- j[k][1]=m;
- k++;
- }
- k--;
- int x=1;
- double z=0;
- for(;x<=k;x++)//求x的平均值
- {
- z=z+j[x][0];
- }
- l=z/k;
- int s=1;
- double y=0;
- for(;s<=k;s++)//求y的平均值
- {
- y=y+j[s][1];
- }
- u=y/k;
- int p=1;
- double q=0;
- for(;p<=k;p++)
- {
- q=q+j[p][0]*j[p][1];
- }
- double c=q-k*l*u;
- p=1;
- double d=0;
- for(;p<=k;p++)
- {
- d=d+j[p][0]*j[p][0];
- }
- double f=d-k*l*l;
- double b=c/f;
- double a=u-l*b;
- printf("Y=%.4lf+%.4lf*X",a,b);
- return 0;
- }
- #include <stdio.h>
- #include <stdlib.h>
-
- int main()
- {
- int i;
- int j[36000][5];
- int a,b,c,d,e;
- scanf("%d",&i);
- int k=1;
- for(;k<=i;k++)
- {
- scanf("%d %d %d %d %d",&a,&b,&c,&d,&e);
- j[k][0]=a;
- j[k][1]=b;
- j[k][2]=c;
- j[k][3]=d;
- j[k][4]=e;
- }
- k=1;
- for(;k<=i;k++)
- {
- if((j[k][0]+j[k][1]<=j[k][3]&&j[k][2]<=j[k][4])||(j[k][0]+j[k][2]<=j[k][3]&&j[k][1]<=j[k][4])||(j[k][1]+j[k][2]<=j[k][3]&&j[k][0]<=j[k][4]))
- printf("YES\n");
- else printf("NO\n");
- }
- return 0;
- }
-
感觉不是很难,就是要调用三个函数,该程序可以AC,废话不多说,上代码!
- #include <stdio.h>
- #include <stdlib.h>
- int quwei(int a);
- int huiwenshu(int b);
- int jinzhihuiwen(int c,int d);
-
- int main()
- {
- int i,j;
- int k=1;
- int m=0;
- int s=1;
- scanf("%d %d",&i,&j);
- for(;k<=i;k++)
- {
- if(k<j)
- {
- m=m+k;
- }
- else
- {
- if(huiwenshu(k)==s&&jinzhihuiwen(k,j)==s)
- m=m+k;
- }
- }
- printf("%d",m);
- return 0;
- }
- int quwei(int a)
- {
- int t=0;
- while(a!=0)
- {
- a=a/10;
- t++;
- }
- return t;
- }
- int huiwenshu(int b)
- {
- int x=0;
- x=quwei(b);
- int j[1000];
- int k=1;
- for(;k<=x;k++)
- {
- j[k]=b%10;
- b=b/10;
- }
- for(int m=1;m<=(x/2);m++)
- {
- if(j[m]!=j[m+x-1])
- return 0;
- }
- return 1;
- }
- int jinzhihuiwen(int c,int d)
- {
- int j[10000];
- int n=1;
- for(;c!=0;n++)
- {
- j[n]=c%d;
- c=c/d;
- }
- for(int m=1;m<=(n/2);m++)
- {
- if(j[m]!=j[n-m])
- return 0;
- }
- return 1;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。