当前位置:   article > 正文

蓝桥杯官网填空题(寻找整数)_有一个不超过10^17的正整数n,知道这个数除以2至49后的余数如下表所示,求这个正整

有一个不超过10^17的正整数n,知道这个数除以2至49后的余数如下表所示,求这个正整

问题描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

有一个不超过 10^17 的正整数  n,知道这个数除以 2 至 49 后的余数如下表所示,求这个正整数最小是多少。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 512M

思路:

a                mod                间隔                                                n

2                   1                     2                    3、5、7、9、11、13、15、17、19、21、23···

3                   2                     6                    5、8、11、14、17、20、23、26、29、32···

4                   1                     12                  5、9、13、17、21、25、29、33、37、41···

5                   4                     4                    9、14、19、24、29、34、39、44、49、53···

```

由上表可得出规律,间隔为x个a的公倍数。

在n中找到既满足n%a=mod又满足n%(a-1)=mod的数。

  1. import java.util.Scanner;
  2. public class Main {
  3. public static void main(String args[]) {
  4. long lcm=2,ans=3;
  5. long[] a=new long[] {0,0,1,2,1,4,5,4,1,2,9,0,5,10,11,14,9,0,11,18,9,11,11,15,17,9,23,20,25,16,29,27,25,11,17,4,29,22,37,23,9,1,11,11,33,29,15,5,41,46};
  6. for(int i=3;i<=49;i++) {
  7. while(ans%i!=a[i]) {
  8. ans+=lcm;
  9. }
  10. lcm=lcm(i,lcm);
  11. }
  12. System.out.println(ans);
  13. }
  14. public static long gcd(long a,long b) {
  15. if(b==0) {
  16. return a;
  17. }
  18. else {
  19. return gcd(b,a%b);
  20. }
  21. }
  22. public static long lcm(long a,long b) {
  23. return a*(b/gcd(a,b));
  24. }
  25. }

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号