1080 两个数的平方和
Posted i am back
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1080 两个数的平方和相关的知识,希望对你有一定的参考价值。
给出一个整数N,将N表示为2个整数i与j的平方之和(i <= j),如果有多种表示,按照i的递增序输出。
例如:N = 130,130 = 3^2 + 11^2 = 7^2 + 9^2(注:3^2 + 11^2同11^2 + 3^2算1种)
Input
一个数N(1 <= N <= 10^9)
Output
共K行:每行2个数,i j,表示N = i^2 + j^2(0 <= i <= j)。 如果无法分解为2个数的平方和,则输出No Solution
Input示例
130
Output示例
3 11 7 9
过几天就夏令营了,算法也有好久没有写了,因为各种原因(主要是懒),不过现在又有继续的下去的原因了,所以ACM再菜也要搞下去
先做几个水题练练手吧
这题很简单,因为数据为1e9,所以只能单层遍历sqrt(1e9),
/* author:gsw data:2018.7.14 link:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1080 */ #define ll long long #define IO ios::sync_with_stdio(false); #include<math.h> #include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> using namespace std; ll n;bool vis[100005]; void init() { memset(vis,0,sizeof(vis)); } int main() { scanf("%lld",&n); int cont=0; for(ll i=0;i<=sqrt(n);i++) { ll jj=n-i*i;ll j=sqrt(jj); if(j*j==jj) { if(vis[j]==0)printf("%lld %lld ",i,j); vis[i]=1;vis[j]=1;cont=1; } } if(cont==0)printf("No Solution "); return 0; }
以上是关于1080 两个数的平方和的主要内容,如果未能解决你的问题,请参考以下文章