原题链接:C语言训练-8除不尽的数
解题思路:
新手见解,欢迎指正!
首先根据题目的意思,我们可以理解为以下几个式子
(n表示求解数,x,y表示商)
n/8=x1 ...1
x1/8=x2 ...1
x2/8=a ...1
n/17=y ...4
y/17=2a ...15
之后我们把这几个式子整合一下,用带入消元法可以得到以下两个关于a的式子
(((n-1)/8)-1)/8-7)/8=a
((n-4)/17)-15)/17=2a
再把这两个式子合并就得到了判断n的条件
(((n-1)/8)-1)/8-7)/8*2==((n-4)/17)-15)/17
再通过题目条件我们可以得知这个n的值为4+k*17,我们可以以此条件来减少循环次数
注意事项:
注意计算时的类型转换,最好在运算中使用浮点型数据,不然容易出错
参考代码:
#include<stdio.h> int main() { double N=4; while(1) { N+=17; if( ((((N-1.0)/8.0)-1.0)/8.0-7.0)/8.0*2==((N-4.0)/17.0-15.0)/17.0 ) { printf("%.0llf\n",N); break; } } return 0; }
0.0分
7 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复