题解 CF233B【Non-square Equation】

概述

题号 难度 \(AC\)时间及记录
\(\texttt{CF233B}\) \(\texttt{洛谷难度:普及-}\) \(\texttt{On 2021/04/28}\)

解析

这道题目题目意思不难理解,
当我们看到数据范围,
就明白不能硬做。
稍加思考,就知道数字和一定很小,
也就是说对答案影响不大。
那我们不妨就只枚举接近 \(N\) 的数字。题解 CF233B【Non-square Equation】
别的题解都证明了在 \(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;
}
···
上一篇:vue-router的基本使用


下一篇:利用全局变量$_SESSION和register_shutdown_function自定义会话处理