hdu 1407 测试你是否和LTC水平一样高

                        测试你是否和LTC水平一样高

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 10505    Accepted Submission(s): 3413

Problem Description

大家提到LTC都佩服的不行,不过,如果竞赛只有这一个题目,我敢保证你和他绝对在一个水平线上!
你的任务是:
计算方程x^2+y^2+z^2= num的一个正整数解。

 

 

Input

输入数据包含多个测试实例,每个实例占一行,仅仅包含一个小于等于10000的正整数num。

 

 

Output

对于每组测试数据,请按照x,y,z递增的顺序输出它的一个最小正整数解,每个实例的输出占一行,题目保证所有测试数据都有解。

 

 

Sample Input

3

 

 

Sample Output

1 1 1

 

 

Author

lcy

 

 

Source

杭电ACM集训队训练赛(IV)

 

 

代码:

#include "stdio.h"

  int main()

{int i,j,k,n;

  int q=0;

  while(scanf("%d",&n)!=EOF)

  {  q=0;

         for(i=1;i<102;i++)

  { for(j=i;j<102;j++)

        { for(k=j;k<102;k++)

          { if((i*i+j*j+k*k)==n)

             if(i<=j && j<=k )

             { printf("%d %d %d ",i,j,k);

                        q=1;

                   }

                   if(q>0)

                       break;

            

          }

           if(q>0)

                      break;

       }

               

      if(q>0)

                      break;

    }

  }

   return 0;

 

}

总结:在做题的过程中,我们经常回遇到找到满足条件的结果后要跳出循环的情况,这里我们有这样的一个方法。找一个变量q标记已经找到满足条件结果的状态,然后用if判断break

跳出循环

以下的跳出循环的方式与此类似

#include<stdio.h>
#include<math.h>
int main()
{
        int num;
        int x,y,z;
        int flag,i;
        int a[105];
        for(i=1;i<=100;i++)
               a[i]=i*i;
        while(scanf("%d",&num)!=EOF)
        {
               flag=1;
               for(x=1;x<=100;x++)
               {
                       if(flag)
                       for(y=x;y<=100;y++)
                       {
                               if(flag)
                               for(z=y;z<=100;z++)
                               {
                                      if(flag&&a[x]+a[y]+a[z]==num)
                                      {
                                              printf("%d %d %d
",x,y,z);
                                              flag=0;
                                              break;
                                      }
                                      if(a[x]+a[y]+a[z]>num) break;
                               }
                               else break;
                       }
                       else break;
               }
        }

}

原文地址:https://www.cnblogs.com/songmingtao/p/3226549.html