[蓝桥杯2015初赛]方程整数解(思维+模拟)

题目链接http://oj.ecustacm.cn/problem.php?id=1250
在这里插入图片描述分析
三个未知变量,对于符合情况的三个数,如果赋给不同的变量,就会有不同的结果,这里只保留一组
依题意,可以用三层for循环,细节地方注意:每一层,涉及到几个变量,它的平方和都是小于等于n
代码

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
    int n;
    int flag;
    while(~scanf("%d",&n))
    {
        flag=0;
        for(int i=1; i<=n; i++)/*对于每一次循环,都保证k>=j>=i,这样保证多解时,只保留一组解*/
        {
            for(int j=i; i*i+j*j<=n; j++)/*每一层,涉及到几个变量,它的平方和都是小于等于n*/
            {
                for(int k=j; i*i+j*j+k*k<=n; k++)
                {
                    if(i*i+j*j+k*k==n)
                    {
                        flag=1;
                        printf("%d %d %d\n",i,j,k);
                    }
                }
            }
        }
        if(flag==0)
            printf("No Solution\n");
    }
    return 0;
}
发布了165 篇原创文章 · 获赞 6 · 访问量 5036

猜你喜欢

转载自blog.csdn.net/lylzsx20172018/article/details/104098932