CSU 1803: 2016
来源:互联网 发布:逆袭网络剧可以在哪看 编辑:程序博客网 时间:2024/05/22 00:43
题目:
Description
给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量:
1. 1≤a≤n,1≤b≤m;
2. a×b 是 2016 的倍数。
Input
输入包含不超过 30 组数据。
每组数据包含两个整数 n,m (1≤n,m≤109).
Output
对于每组数据,输出一个整数表示满足条件的数量。
Sample Input
32 632016 20161000000000 1000000000
Sample Output
1305767523146895502644
这个题目直接枚举g=gcd(a,2016)即可2016=2*2*2*2*2*3*3*7,所以g有6*3*2=36种情况。
对于每个g,求a满足gcd(a,2016)恰好是g,求b使得2016| a*b
一,求a满足gcd(a,2016)恰好是g
即求1,2,3......n/g这些数中,有多少个和2016/g互质,用容斥原理即可
二,求b使得2016| a*b
即求1,2,3......m这些数中,有多少个是2016/g的倍数,答案就是m*g/2016
代码:
#include<iostream>using namespace std;int n, m;long long f(int g){int nn = n / g;long long s = nn - (1008 % g == 0)*nn / 2 - (672 % g == 0)*nn / 3 - (288 % g == 0)*nn / 7;s += (336 % g == 0)*nn / 6 + (96 % g == 0)*nn / 21 + (144 % g == 0)*nn / 14 - (48 % g == 0)*nn / 42;long long gg = g;return gg*m / 2016 * s;}long long f7(int g){return f(g) + f(g * 7);}long long f5(int g){return f7(g) + f7(g * 3) + f7(g * 9);}int main(){while (cin >> n >> m)cout << f5(1) + f5(2) + f5(4) + f5(8) + f5(16) + f5(32) << endl;return 0;}
0 0
- CSU 1803 2016
- [CSU 1803 2016]数学
- CSU 1803 2016 【枚举】
- CSU 1803: 2016
- CSU 1803 2016(数论)
- CSU 1803 2016
- CSU 1803: 2016 (省赛真题)
- CSU 1803 2016
- CSU 1803: 2016
- CSU 1803 2016(思维)
- CSU 1803:2016解题报告
- 2016 CSU 1803 (思路)
- CSU 1803:2016(数论)
- CSU 1803
- csu 1803 2016 2016湖南省赛 A
- CSU 1803 2016 (逆向思维)
- CSU-1803: 2016 ,同余定理!
- CSU 1803 2016 (数论+思路)
- 3、Oracle PL/SQL中Date格式及格式转换
- 位运算符
- mybatis在xml文件中处理大于号小于号的方法
- 错误:android the following class coundn‘t be instantiated
- 图片压缩
- CSU 1803: 2016
- 解决iOS项目的版本兼容问题-结合宏、Category和Runtime
- 蓝桥杯BASIC28 Huffman树
- PhpStorm的POST方法无法接收表单数据的解决方法
- 启动Tomcat错误:he JRE_HOME environment variable is not defined correctly
- AFNetworking的使用步骤
- 两种数据库插入方法
- Python做词云
- DTD实体之 参数实体