今天做数学作业的时候看到了一道题,题目描述如下:
√(24n)是正整数,求最小的整数n的值
很明显,这道简单的大题可以用枚举解决(也可以直接公倍数枚举,更快一点,但是最多只用枚举不到10次),正当我列了个大括号并解决完了这道题准备收起作业本的时候,我一个激灵,打了这么久CSP的复赛题,不如来看看这样的简单题目,夯实一下基础,顺带放松一下(省流:懒,觉得考试题太难),于是……
/*
*题目描述:
*sqrt(24n)是正整数,求最小的整数n的值
*/
#include <bits/stdc++.h>
using namespace std;
int main() {
/*for(int i = 1;; ++i) {
double num = sqrt(24 * i);
int numi = static_cast <int> (num);
if(num == numi) {
printf("num: %d", i);
break;
}
}*/
for(int i = 1;; ((sqrt(24 * i) == static_cast <int> (sqrt(24 * i))) ? (printf("num: %d", i), exit(0)) : void()), ++i);
return 0;
}
main函数中多行注释括起来的就是主题逻辑,从1开始枚举,每次计算根号24n的值并判断是否是整数,如果是则输出n并退出
很明显,注释括起来的代码不符合我的暴力美学式思考逻辑,因此就有了下面的究极整合版——直接把break换成exit(0),然后把变量直接换成函数,用三元运算符团成一团,塞进for循环的++i前面,足够暴力,足够直接,非常符合我的审美(省流:压榨了CPU省了内存)
PS:最开始写出下面的究极整合版的时候,for循环后面忘加分号了,所以第一次循环就直接return了,没有输出结果,搞的我还研究了半天:/