NYOJ--993 How many integers can you find
2014-06-28 08:26
369 查看
How many integers can you find
时间限制:1000 ms | 内存限制:65535 KB难度:1
描述 给你三个数,n,m1,m2,找出所有小于n的能被m1或m2整除的数的个数。
输入输入包含多组测试数据,每组数据占一行。
0<n<2^31,0<m1,m2<=10。输出每组数据输出占一行。样例输入
12 2 3
样例输出
7
来源爱生活
#include <iostream> using std::endl; using std::cout; using std::cin; //欧几里得求最大公约数 int gcd(int a, int b) { if (a % b == 0) { return b; } else { return gcd(b, a % b); } } int main() { int n,m1, m2; while (cin >> n >> m1 >> m2) { if (m1 != m2) cout << (n-1)/m1+(n-1)/m2-(n-1)/((m1*m2)/gcd(m1,m2))<< endl; else cout << (n-1)/m1 << endl; } return 0; }
暴力循环的话就一定会超时,
/* 能被m1整除的个数 + 能被m2整除的个数 - 能同时被m1和m2整除的个数 */
s = n / m1 + n / m2 - n / lcm(m1, m2);
if (n % m1 == 0) s--;
if (n % m2 == 0) s--;
if (n % lcm(m1, m2) == 0) s++;
相关文章推荐
- NYOJ993 How many integers can you find
- NYOJ 题目993 How many integers can you find(容斥原理,数学)
- NYOJ993--How many integers can you find
- nyoj-993-How many integers can you find
- 993 How many integers can you find
- NYOJ--How many integers can you find
- NYOJ-How many integers can you find
- HDU 1796 How many integers can you find【容斥原理】
- HDU 1796 How many integers can you find(容斥原理)
- hdu1796 How many integers can you find(容斥)
- Hdu 1796 How many integers can you find (容斥原理 递归及循环的一般写法)
- HDU 1796 How many integers can you find (容斥)
- HDU - 1796 How many integers can you find (容斥)
- HDU 1796 How many integers can you find (容斥原理 入门)
- hdu1796 How many integers can you find
- How many integers can you find
- hdu 1796 How many integers can you find(容斥定理)
- How many integers can you find(容斥+dfs容斥)
- hdu1796 How many integers can you find 容斥原理
- hdu 1796 How many integers can you find 容斥定理