打表解之

View Code
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<cmath>
 5 using namespace std;
 6 const int N=(1<<15)+1;
 7 int po[200],ans[N+2];
 8 int main()
 9 {
10     for(int i=1;i<200;po[i]=i*i,i++);
11     memset(ans,0,sizeof(ans));
12     for(int i1=1,tp1;po[i1]<=N;i1++)
13     {
14         ans[tp1=po[i1]]++;
15         for(int i2=i1,tp2;tp1+po[i2]<=N;i2++)
16         {
17             ans[tp2=tp1+po[i2]]++;
18             for(int i3=i2,tp3;tp2+po[i3]<=N;i3++)
19             {
20                 ans[tp3=tp2+po[i3]]++;
21                 for(int i4=i3;tp3+po[i4]<=N;i4++)
22                     ans[tp3+po[i4]]++;
23             }
24         }
25     }
26     int n;
27     while(scanf("%d",&n)&&n)
28         printf("%d\n",ans[n]);
29     return 0;
30 }

相关文章:

  • 2022-12-23
  • 2021-06-06
  • 2022-12-23
  • 2021-05-25
  • 2021-11-07
  • 2021-08-11
  • 2021-09-19
  • 2022-12-23
猜你喜欢
  • 2022-01-09
  • 2022-01-12
  • 2022-12-23
  • 2021-10-13
  • 2022-01-18
  • 2021-10-24
  • 2021-06-19
相关资源
相似解决方案