概述
题号 | 难度 | \(AC\)时间及记录 |
---|---|---|
\(\texttt{CF233B}\) | \(\texttt{洛谷难度:普及-}\) | \(\texttt{On 2021/04/28}\) |
解析
这道题目题目意思不难理解,
当我们看到数据范围,
就明白不能硬做。
稍加思考,就知道数字和一定很小,
也就是说对答案影响不大。
那我们不妨就只枚举接近 \(N\) 的数字。
别的题解都证明了在 \(81\) 以内就能过了。
用了一个叫 stringstream 的东西,
顺便提一下吧。
就是说随意地将字符串和整形转换,
其他类型能不能换我不知道欸。
参考
/*
Author:Xsmyy
Problem:CF233B
Date:2021/04/28
*/
#include<bits/stdc++.h>
#define BetterIO ios::sync_with_stdio(false)
using namespace std;
long long N;
inline long long F(int X)
{
register stringstream Room;
register string S;
Room<<X;
Room>>S;
register int i;
register long long Ret=0;
for(i=0;i<S.size();i++)Ret+=(int)(S[i]-'0');
return Ret;
}
int main(void)
{
BetterIO;
#ifndef ONLINE_JUDGE
freopen("SampleIN.in","r",stdin);
#else
#endif
register long long X;
cin>>N;
for(X=sqrt(N)-81;X<=sqrt(N)+81;X++)if(X*X+F(X)*X==N)cout<<X<<endl,exit(0);
cout<<-1<<endl;
return 0;
}
···