\(n\)是正整数,其四个最小的因子分别为\(d_1,d_2,d_3,d_4\)

求对于所有的\(n \le m\)满足

\[d_1^2+d_2^2+d_3^2+d_4^2=n
\]

\(n\)的个数。

这是一道数竞题,下面来求\(n\)

显然\(d_1=1\),则\(n=1+d_2^2+d_3^2+d_4^2\)

\(n\)是奇数,则其因子都是奇数,其平方和为四个奇数相加为偶数,矛盾。故n为偶数\(d_2=2\),则\(n-5=d_3^2+d_4^2\)

此时,\(d_3\)只可能是\(3,4\)或者大于\(4\)质数

  • \(d_3=3\),则\(d_4=4\)\(d_4=6\),验算得不存在这样的\(n\)
  • \(d_3=4\),则由奇偶性可得,\(d_4\)一定为奇数,所以\(d_4^2 \equiv 1(\mbox{mod } 4)\),但\(n-5-d_3^2=n-21 \equiv 3(\mbox{mod }4)\),所以矛盾。

所以\(n\)只能是一个大于\(4\)的质数,且\(d_4=2d_3\),故\(n-5=5d_3^2 \Longrightarrow n=5(d_3^2+1)\)。故\(5 \nmid n\),即\(d_3=5,d_4=10\),得\(n=130\)。故\(\forall n \in \mathbb{N^+}\)只有\(n=130\)符合题意。

  1. #include<iostream>
  2. #include<algorithm>
  3. #include<cstdio>
  4. #include<cstring>
  5. #include<cmath>
  6. #include<map>
  7. #include<set>
  8. #include<queue>
  9. #include<vector>
  10. #define IL inline
  11. #define re register
  12. #define LL long long
  13. #define ULL unsigned long long
  14. #define re register
  15. #define debug printf("Now is %d\n",__LINE__);
  16. using namespace std;
  17. template<class T>inline void read(T&x)
  18. {
  19. char ch=getchar();
  20. while(!isdigit(ch))ch=getchar();
  21. x=ch-'0';ch=getchar();
  22. while(isdigit(ch)){x=x*10+ch-'0';ch=getchar();}
  23. }
  24. inline LL read()
  25. {
  26. int x=0;
  27. char ch=getchar();
  28. while(!isdigit(ch))ch=getchar();
  29. x=ch-'0';ch=getchar();
  30. while(isdigit(ch)){x=x*10+ch-'0';ch=getchar();}
  31. return x;
  32. }
  33. int G[55];
  34. template<class T>inline void write(T x)
  35. {
  36. int g=0;
  37. if(x<0) x=-x,putchar('-');
  38. do{G[++g]=x%10;x/=10;}while(x);
  39. for(re int i=g;i>=1;--i)putchar('0'+G[i]);putchar('\n');
  40. }
  41. LL n;
  42. int main()
  43. {
  44. n=read();
  45. if(n>=130) cout<<1<<endl;
  46. else cout<<0<<endl;
  47. return 0;
  48. }

版权声明:本文为send-off-a-friend原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/send-off-a-friend/p/13928677.html