解题思路:
逐级排除法:
1:若(n%8!=1)||(n%17!=4) 则不满足条件,返回;
2:若(n/8)%8!=1||(n/17)%17!=15 则不满足条件,返回;
3:若((n/8)/8)%8!=7 则不满足条件,返回;
4:若(n/512)*2!=(n/(17*17)) 则不满足条件,返回;
5:以上四条全通过 ,输出这个数,结束循环;
6:也可以把上面四个条件写成一大个;
eg:
#include<stdio.h> int qiushu(int n); int main() {int n=1; while(qiushu(n)!=1) n++; return 0; } /*------------------------------------*/ int qiushu(int n) { if((n%8!=1)||(n%17!=4)||(n/8)%8!=1||(n/17)%17!=15||(n/64)%8!=7||(n/512)*2!=(n/(17*17))) return 0; else { printf("%d",n); return 1; } }
注意事项:
(n/512)*2!不可以写为2*n/512 或者n/256,因为n除8是有余数的,先乘2后,比如余数就和题目要求的不一样;
参考代码:
#include <stdio.h> int qiushu( int n ); int main() { int n = 1; while ( qiushu( n ) != 1 ) n++; return(0); } /*------------------------------------*/ int qiushu( int n ) { if ( (n % 8 != 1) || (n % 17 != 4) ) return(0); else if ( (n / 8) % 8 != 1 || (n / 17) % 17 != 15 ) return(0); else if ( ( (n / 8) / 8) % 8 != 7 ) return(0); else if ( (n / 512) * 2 != (n / (17 * 17) ) ) return(0); else{ printf( "%d", n ); return(1); } }
0.0分
7 人评分
int main(){ int x,i; int a,b; for(i=1;i<10000;i++){ a=((i*8+7)*8+1)*8+1; b=(i*2*17+15)*17+4; if(a==b){ printf("%d",a); } } return 0; }
为什么使用&&是不可以的呢
你算哪个bug 2020-04-30 09:46:14 |
||是或 有一个不满足就不行 &&且 要两个都不满足才不行 明显前一个符合题意,
爱你一生 2021-01-26 22:27:45 |
可以的
爱你一生 2021-01-26 22:28:07 |
#include<stdio.h> int main() { int a; for(a=0;;a++) { if(a%8==1 &&a/8%8==1 && a/8/8%8==7) if(a%17==4 &&a/17%17==15) if(a/17/17==2*(a/8/8/8)) { printf("%d ",a); break; } } return 0; }
#include<stdio.h> int main() { int a = 0; a = (17 * 15 - 8 * 8*7 - 5) / (8*8*8-17*17*2); printf("%d",a*8*8*8+7*8*8+9); }
#include<stdio.h> int main() { int i = 0; while ((i % 8 != 1) || ((i / 8) % 8 != 1) || ((i / 64) % 8 != 7) || (i % 17 != 4) || ((i / 17) % 17 != 15) || ((i / 512) * 2 != i / (17*17))) i++; printf("%d\n", i); return 0; }