T1
Description
输入n,求出方程 n√=x√−y√ ,当x和y都是正整数的解中x的最小值
Hint
我们应用解方程的方法解出
x=y+n+2ny−−√
,我们想到要使x,y都是整数
ny−−√
必须是整数,则
ny
是完全平方数,且y越小x越小
我们考虑怎么使它是整数,并同时使y最小
想到把n分解质因数,然后把它呈奇数个的因子填成整数,即可达到最优
Code
#include<iostream>
#include<cstdio>
#include<cmath>
#define siz 200100
using namespace std;
long long n,cnt=1,ans=1,tn;
int main() {
freopen("sqrt.in","r",stdin);
freopen("sqrt.out","w",stdout);
scanf("%lld",&n); tn=n;
for(long long i=2;i<=(int)sqrt(n);i++) {
cnt=0;
while(tn%i==0) {
cnt++;
tn/=i;
}
if(cnt%2) ans*=i;
if(tn==1) break;
}
ans*=tn;
printf("%lld",ans+n+((long long)sqrt(ans*n))*2);
return 0;
}
T2
Description
见洛谷P2746
强连通分量基础题
Hint
强连通分量基础
Code
模板题没代码好了
T3
Description
见codevs1437
一道大模拟题……hash+模拟
Hint
大模拟大模拟
Code
emmmmmmm