题目地址:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1803

Knowledge Point:

  同余定理:两个整数a、b,若它们除以整数m所得的余数相等,则称a与b对模m同余或a同余于b模m。记作 a≡b(mod m)

    加法运用: (a + b) % m = (a % m + b % m) % m

    乘法运用: (a * b) % m = ((a % m) * (b % m)) % m

     高精度取模: 一个高精度数对一个数取余,可以把高精度数看成各位数的权值与个位数乘积的和。

          eg: 1234  = ((1*10+2) *10+3) *10+4, 综合运用上面的加法和乘法运用公式求解;

1 string a = "1234";
2 int ans = 0;
3 for(int i = 0; i < a.length; i++){
4     ans = (ans * 10 + a[i] - '0') % mod;
5 }
6 cout << ans << endl;

     快速幂取模:  将幂拆解为多个底数的平方次的积,如果指数为偶数,把指数除以2,并让底数的平方次取余,如果指数为奇数,就把多出来的底数记录下来,再执行偶数次的操作。

 1 int PowerMod(int a, int b, int mod){
 2     int ans = 1;    //a-底数,b-质数
 3     a = a % mod;
 4     while(b > 0){
 5         if(b&1){
 6             ans *= (a % mod);
 7         }
 8         b >>= 1;
 9         a = (a * a) % mod;
10     }
11     ans %= mod;
12     return ans;
13 }

Summarize:

  1. 同余定理运用;

  2. 数据范围爆 int,使用 long long;

  3. 如果 (i*j)%mod==0 则有 (i*j+mod)%mod==0 ;

  一开始我选择求2016的所有因数,循环将 n 和 m 中因数的倍数个数相乘再将所有结果相加。但可能出现某一个数 x 同时是多个因数的公倍数,且

2016/x 恰好也是多个因数的公倍数,出现重复,故该方法不能通过。

附代码:

 1 /*
 2 题目地址:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1803
 3
 4 2016
 5 给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量:
 6     1. 1≤a≤n,1≤b≤m;
 7     2. a×b 是 2016 的倍数。
 8 输入每组数据包含两个整数 n,m (1≤n,m≤10e9).
 9
10 Sample Input
11 32 63
12 2016 2016
13 1000000000 1000000000
14
15 Sample Output
16 1
17 30576
18 7523146895502644
19 */
20 #include<iostream>
21 #include<cstring>
22 #include<algorithm>
23 #include<vector>
24 #include<queue>
25 #include<cmath>
26 using namespace std;
27
28 #define LL long long
29 const int N = 2016;
30 LL n,m,ans;
31 LL a[N], b[N];
32
33 int main()
34 {
35     ios::sync_with_stdio(false);
36
37     while(cin>>n>>m)
38     {
39         ans=0;
40         for(int i=0; i<N; i++)
41             { a[i]=n/N; b[i]=m/N;}
42         for(int i=1; i<=n%N; i++) a[i]++;
43         for(int i=1; i<=m%N; i++) b[i]++;
44
45         for(int i=0; i<N; i++)
46             for(int j=0; j<N; j++)
47                 if(i*j%N == 0)
48                     ans += a[i]*b[j];
49         cout<<ans<<endl;
50     }
51
52     return 0;
53 }

转载于:https://www.cnblogs.com/liubilan/p/9384032.html

十二届 - CSU 1803 :2016(同余定理)相关推荐

  1. CSU 1803: 2016

    CSU 1803: 2016 水题 Description 给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量: 1. 1≤a≤n,1≤b≤m; 2. a×b 是 2016 的倍数 ...

  2. CSU 1803 2016(数论)

    2016 Problem Description: 给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量: 1≤a≤n,1≤b≤m; a×b 是 2016 的倍数. Input: 输 ...

  3. CSU 1803 2016 (数学)【2016年湖南省第十二届大学生计算机程序设计竞赛 - A】

    题目点我点我点我 湖南省第十二届大学生计算机程序设计竞赛 1803: 2016 Time Limit: 5 Sec   Memory Limit: 128 MB Submit: 289   Solve ...

  4. CSU 1803 2016

    a,b可以表示成a=x*2016+i  b=y*2016+j; a*b=x*y*2016^2+x*2016*j+y*2016*i+i*j; 其中除了i*j这一项,其他的项都是2016的倍数; 事先建立 ...

  5. 2016年湖南省第十二届大学生计算机程序设计竞赛(重现)

    A(1803):2016 Submit Page    Summary    Time Limit: 5 Sec     Memory Limit: 128 Mb     Submitted: 245 ...

  6. 2020高交会第二十二届中国国际高新技术成果交易会

    2020高交会第二十二届中国国际高新技术成果交易会 第二十二届中国国际高新技术成果交易会 信息技术与产品展 2020年11月11-15日 深圳会展中心1展馆 国家级科技盛宴 国际化.专业化.便利化.高 ...

  7. 从1到N,第十二届中国IDC产业年度大典在京启幕

    此次大会,IBM.微软.华为.腾讯云.世纪互联.京东云等十余家企业高层就IDC产业发展现状与趋势展开了深入讨论. 12月21日主论坛现场 2017年12月20日-22日,由中国IDC产业年度大典组委会 ...

  8. 从1到N 第十二届中国IDC产业年度大典在京启幕

    12月21日主论坛现场 2017年12月20日-22日,由中国IDC产业年度大典组委会主办,中国IDC圈.CloudBest承办的第十二届中国IDC产业年度大典在北京国家会议中心盛大召开.来自IBM. ...

  9. 大咖云集,从1到N,第十二届中国IDC产业年度大典集锦

    12月21日主论坛现场 2017年12月20日-22日,由中国IDC产业年度大典组委会主办,中国IDC圈.CloudBest承办的第十二届中国IDC产业年度大典在北京国家会议中心盛大召开.来自IBM. ...

最新文章

  1. 2015.11.3 RichBox改变若干文本颜色
  2. VS2005中重构的用法
  3. 正则表达式处理的基本步骤
  4. UltraEdit不高亮解决办法
  5. 服务器销售税率,转销售云服务器税率
  6. uoj22 外星人(dp)
  7. 基于蒙特卡罗模拟的金融风险评估-函数调用关系图
  8. 类的构造器-init和new
  9. Java注解全面解析
  10. 299. Bulls and Cows
  11. ROS学习笔记5(理解ROS节点)
  12. 笔记本无线网通过网线共享给其他主机
  13. 03_java基础(四)之方法的创建与调用
  14. Adobe AIR简单的缓存技术
  15. 《和平精英》:新军需山经魅狐、滑板小狐今日正式上线,很帅气!
  16. HTML与CSS如何创建悬停折角纸叠效果
  17. 2021年江苏省高考数据统计:江苏省普通类报名人数30.9万人,本土167所高校(2所985大学)
  18. 大比分领先!ACCV 2022 国际细粒度图像分析挑战赛冠军方案
  19. React18降版本操作
  20. Tecplot中自定义函数

热门文章

  1. 计算机精英协会考核题 —— 第二题:蛇形填数
  2. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1105:数组逆序重存放
  3. 如何将本地项目上传至GitHub
  4. SLAM 学习与开发经验分享
  5. 【数字图像】数字图像处理博客汇总
  6. 【Protocol Buffer】Protocol Buffer入门教程(五):repeated限定修饰符
  7. 优优加速cdn带宽_为什么使用CDN你的网速还是那么慢?
  8. TCP/IP学习笔记(七)四次挥手
  9. 1013 数素数 (20 分)(c语言)
  10. 给未来的自己一封信计算机,给未来的自己一封信