原题链接:C语言训练-8除不尽的数
解题思路:
逐级排除法:
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分
6 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复