题解:P11310 无穷的迭代器
前言:
今天的最后一篇题解,肝不动了……
写完就下了各位……
题意分析:
给定一个非负整数
代码详解:
代码所需的头文件:
#include <cmath>
当 NO!。
其他的情况来看,我们可以初始化操作次数为
-
计算
\lceil r \rceil 。 -
将
r 乘以\lceil r \rceil 。 -
增加
1 到操作次数。 -
检查
r 是否为整数。
终止条件:
如果 NO! 并终止。
放上完整代码!!!
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define re return
#define ew 5005
#define sz 10000005
#define sscc cout<<6;
const int MOD=1e9+7;
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int T;
cin>>T;
while(T--){
int k;
cin>>k;
if(k==0) {
cout<<"NO!"<<endl;
continue;
}
long double r=k+0.5;
int sum=0;
while(true){
int rr=ceil(r);
r*=rr;
sum++;
if(floor(r)==r){
cout<<sum<<endl;
break;
}
// 防止无限循环,按道理来说上不应该超过这个值
if(sum>100) {
cout<< "NO!"<<endl;
break;
}
}
}
re 0;
}
输入部分:
首先读取测试数据组数
特殊部分:
当 NO!。
循环操作:
初始化
终止条件:
如果 NO!。
完结撒花★,°:.☆( ̄▽ ̄)/$.°★。