1、解不等式
1 #include<stdio.h> 2 #include<math.h> 3 4 int main() 5 { 6 int a,b,n=1,n1; 7 scanf("%d%d",&a,&b); 8 9 double sum = 1, d = 1; 10 while(sum<=a || sum>=b) 11 { 12 n++; 13 d += 1.0/n; //迭代除数d 14 sum += 1/d; //累加 15 } 16 n1 = n;//保留区间下限值 17 18 while(sum>a&&sum<b) 19 { 20 n++; 21 d += 1.0/n; //迭代除数d 22 sum += 1/d; //累加 23 } 24 n--; //保留区间上限值 25 26 printf("%d %d",n1,n); 27 return 0; 28 }
2、子序列的和
1 #include<stdio.h> 2 #include<math.h> 3 4 int main() 5 { 6 int n,m; 7 scanf("%d%d",&n,&m); 8 9 double sum = 0,t=0.000001,d; 10 11 for(int i=n; i<=m; ++i) 12 { 13 d = (i/1000.0)*(i/1000.0); //防止数据陷进 14 sum += t/d; 15 } 16 17 printf("%.5f",sum); 18 19 return 0; 20 }
3、排列
1 #include<stdio.h> 2 #include<math.h> 3 4 int fun(int *arr, int n) 5 { 6 int a = n%10, b = n/10%10,c = n/100; 7 if(!a || !b || ++arr[a]>1 || ++arr[b]>1 || ++arr[c]>1) 8 return 0; 9 return 1; 10 } 11 12 int main() 13 { 14 for(int i=123; 3*i<=987; ++i) 15 { 16 int arr[10] = {0}; 17 if(fun(arr,i)&& fun(arr,i*2) && fun(arr,i*3)) 18 printf("%d %d %d ",i,i*2,i*3); 19 } 20 return 0; 21 }
4、探索合数世纪
1 #include<stdio.h> 2 #include<math.h> 3 4 int isPrime(int n) 5 { 6 for(int i=3; i<=sqrt(n); i+=2) 7 if(n%i==0) 8 return 0; 9 return 1; 10 } 11 12 int main() 13 { 14 long a=1,b; 15 int n,m=0,s; 16 scanf("%d",&n); 17 18 while(m!=n) 19 { 20 a++; /*a世纪*/ 21 s=100/2; /*a世纪100/2个奇数年号, 全部为合数, 为合数世纪*/ 22 23 for(b=a*100-99; !isPrime(b) && b<a*100; b+=2) /*枚举a世纪奇数年号b*/ 24 { 25 s--; /*年号b为合数时,s--*/ 26 } 27 28 if(!s) /*s为0, 是合数世纪 m++*/ 29 m++; 30 } 31 32 printf("%ld %ld ",a*100-100,a*100-1);/*输出合数世纪起始年份*/ 33 34 return 0; 35 }
5、特殊整数
1 #include<stdio.h> 2 #include<math.h> 3 4 int fun(int i, int m)/*计算是否含有m*/ 5 { 6 while(i) 7 { 8 if(i%10 == m) 9 return 1; 10 i /= 10; 11 } 12 return 0; 13 } 14 15 int main() 16 { 17 int m,n,g=0; 18 long s=0; 19 scanf("%d%d",&m,&n); 20 21 int t=n, a=1, b=0;/*计算n位数的起始位置a,b*/ 22 while(t--) 23 { 24 a = a*10; 25 b = b*10 + 9; 26 } 27 28 /*n位数的起始位置a,b*/ 29 for(int i=a/10; i<b; ++i) 30 { 31 if(i%m && fun(i,m)){ /*不被m整除且含有m的数i*/ 32 g++; 33 s+=i; 34 } 35 } 36 37 printf("%d %ld ",g,s); 38 39 return 0; 40 }
6、韩信点兵
1 #include<stdio.h> 2 #include<math.h> 3 4 int fun(int a, int b, int c) 5 { 6 for(int i=10; i<100; ++i) 7 { 8 if(i%3==a && i%5==b && i%7==c) 9 return i; 10 } 11 return -1; 12 } 13 14 int main() 15 { 16 int a,b,c; 17 scanf("%d%d%d",&a,&b,&c); 18 printf("%d ",fun(a,b,c)); 19 return 0; 20 }
7、粒子裂变
1 #include<stdio.h> 2 #include<math.h> 3 4 int main() 5 { 6 int a=1,b=0,t; 7 scanf("%d",&t); 8 9 while(t--) 10 { 11 int y1 = a; 12 int y2 = b; 13 14 //1个a裂变3个b 15 b += 3*y1; 16 17 //1个b裂变1个a,2个b 18 a += y2; 19 b += 2*y2; 20 21 //裂变消失的a,b 22 a -= y1; 23 b -= y2; 24 } 25 26 printf("%d %d ",a,b); 27 return 0; 28 }
8、最大乘积
1 #include<stdio.h> 2 #include<math.h> 3 4 int main() 5 { 6 int n,s=1,x,max=0; 7 scanf("%d",&n); 8 9 while(n--) 10 { 11 scanf("%d",&x); 12 s*=x; 13 if(max<s) 14 max = s; 15 } 16 17 if(max>0) 18 printf("%d ",max); 19 else 20 printf("-1"); 21 return 0; 22 }
9、分数拆分
1 #include<stdio.h> 2 #include<math.h> 3 4 int main() 5 { 6 int k=4; 7 scanf("%d",&k); 8 9 for(int m=k*2; m>=2; --m) 10 { 11 for(int i=1; i<=k*2; ++i) 12 { 13 if(k*m*i%(k*m+i)==0 && k == k*m*i/(k*m+i)){ 14 printf("1/%d=1/%d+1/%d ",k,k*m,i); 15 break; 16 } 17 } 18 } 19 20 return 0; 21 }
10、分数化小数
1 #include<stdio.h> 2 #include<math.h> 3 4 int main() 5 { 6 int a,b,c; 7 scanf("%d%d%d",&a,&b,&c); 8 9 /*int n = a<b?a:b; 10 for(int i=n; i>0; --i) 11 { 12 if(a%i==0 && b%i==0){ 13 a/=i,b/=i; 14 break; 15 } 16 }*/ 17 18 int x = a%b; 19 if(a>b) 20 printf("%d.",a/b); 21 else 22 printf("0."); 23 24 //if(x) 25 while(c--) 26 { 27 x *=10; 28 printf("%d",x/b); 29 x %= b; 30 } 31 32 return 0; 33 }