51nod 1284 2 3 5 7的倍數
解題思路:
使用容斥原理;
1.求出所有1~N中所有為2的倍數,3的倍數,5的倍數,7的倍數的個數,在求得的結果中肯定有些是重複的;
2.要減去第一步中重複的哪些數字。如何求重複的那些數字呢?求兩兩的最小公倍數。
例如:1~N中滿足2的倍數的個數有N/2個,滿足3的倍數的個數有N/3個,既滿足2的倍數有滿足3的倍數的個數為N/6個,
則1~N中是2,3的倍數的個數為N/2+N/3-N/6。
後面也用同樣的方法,直到最後所有數的最小公倍數只有1個時,就不用接著往下算啦!(看了程式碼後一目瞭然)
原始碼附上:
#include <iostream> using namespace std; int main() { long long N,cnt=0; int i; cin>>N; cnt += (N/2 + N/3 + N/5 + N/7); cnt -= (N/6 + N/10 + N/14 + N/15 + N/21 + N/35); cnt += (N/30 + N/42 + N/70 + N/105); cnt -= (N/210); cout << N - cnt<<endl; return 0; }
相關推薦
[51nod]1284 2 3 5 7的倍數
std fine bsp () 一個 style inpu 容斥原理 black 給出一個數N,求1至N中,有多少個數不是2 3 5 7的倍數。 例如N = 10,只有1不是2 3 5 7的倍數。 Input 輸入1個數N(1 <= N <= 10^
51Nod 1284 2 3 5 7的倍數
+= put long 例如 pan bsp pre namespace space 給出一個數N,求1至N中,有多少個數不是2 3 5 7的倍數。 例如N = 10,只有1不是2 3 5 7的倍數。 Input 輸入1個數N(1 <= N <= 1
51nod 1284 2 3 5 7的倍數 | 容斥原理
using targe pre include mage style 部分 pan 相交 用容斥原理求出不滿足條件的個數cnt,然後用n-cnt就得到答案了。 這裏不滿條件的數就是能整除2,3,5,7這些數的集合並集。要計算幾個集合並集的大小,我們要先將所有單
51Nod-1284 2 3 5 7的倍數【數位DP+記憶化搜尋】
給出一個數N,求1至N中,有多少個數不是2 3 5 7的倍數。 例如N = 10,只有1不是2 3 5 7的倍數。 Input 輸入1個數N(1 <= N <= 10^18)。 Output 輸出不是2 3 5 7的倍數的數共有多少。 Input示例
51nod 1284 2 3 5 7的倍數
題目 解題思路: 使用容斥原理; 1.求出所有1~N中所有為2的倍數,3的倍數,5的倍數,7的倍數的個數,在求得的結果中肯定有些是重複的; 2.要減去第一步中重複的哪些數字。如何求重複的那些數字呢?求兩兩的最小公倍數。 例如:1~N中滿足2的倍數的個數有N/2個,滿
51-nod -1284 2 3 5 7的倍數
span 輸入 cst sun class ng- pri () retext 1284 . 2 3 5 7的倍數 基準時間限制:1 秒 空間限制:65536 KB 分值: 5 給出一個數N,求1至N中,有多少個數不是2 3 5 7的倍數。 比如N = 10,僅僅有
1090 3個數和為0 1091 線段的重疊 1182 完美字符串 1283 最小周長 1284 2 3 5 7的倍數
out under 輸出 return include 字符串 都是 size != 1090 3個數和為0 給出一個長度為N的無序數組,數組中的元素為整數,有正有負包括0,並互不相等。從中找出所有和 = 0的3個數的組合。如果沒有這樣的組合,輸出No Solution。
1284 2 3 5 7的倍數
its .html align clu tput mes tool fine out 1284 2 3 5 7的倍數 基準時間限制:1 秒 空間限制:131072 KB 分值: 5 難度:1級算法題 收藏 關註 給出一個數N,求1至N中,有多少個數不是2 3 5
1284 2 3 5 7的倍數
給出一個數N,求1至N中,有多少個數不是2 3 5 7的倍數。 例如N = 10,只有1不是2 3 5 7的倍數。 Input 輸入1個數N(1 <= N <= 10^18)。 Out
10以內的素數2,3,5,7的和為17。要求計算得出任意正整數n以內的所有素數的和。
prime rim raw_input input find turn range import port n= int (raw_input())def find_prime(n): L = list(range(2,n + 1)) m = 0 whil
51nod 1010 只包含因子2 3 5的數(打表+排序+二分)
F12 alt bbb art 打表 names syn tdi iostream 1010 只包含因子2 3 5的數 基準時間限制:1 秒 空間限制:131072 KB 分值: 10 難度:2級算法題 收藏 關註 取消關註 K的因子中只包含2 3
51Nod 1010 只包含因子2 3 5的數 | 預處理+二分
black pri inf name ini 包含 def pac ++ Input示例 5 1 8 13 35 77 Output示例 2 8 15 36 80分析:將所有的只含有2 3 5因子的數打一個表保存在一個數組裏,然後二分查找第一個>=數組裏的數
51Nod 1010 只包含2 3 5的數
K的因子中只包含2 3 5。滿足條件的前10個數是:2,3,4,5,6,8,9,10,12,15。 所有這樣的K組成了一個序列S,現在給出一個數n,求S中 >= 給定數的最小的數。 例如:n = 13,S中 >= 13的最小的數是15,所以輸出15。 收起 輸入 第1
只包含因子2 3 5的數(51nod 思維 打表)
K的因子中只包含2 3 5。滿足條件的前10個數是:2,3,4,5,6,8,9,10,12,15。 所有這樣的K組成了一個序列S,現在給出一個數n,求S中 >= 給定數的最小的數。 例如:n = 13,S中 >= 13的最小的數是15,所以輸出15。 Input 第1行:一個數T
【51Nod - 1010】【只包含因子2 3 5的數】
題目: K的因子中只包含2 3 5。滿足條件的前10個數是:2,3,4,5,6,8,9,10,12,15。 所有這樣的K組成了一個序列S,現在給出一個數n,求S中 >= 給定數的最小的數。 例如:n = 13,S中 >= 13的最小的數是15,所以輸出15。 Inpu
【51Nod - 1010 】只包含因子2 3 5的數 (打表,有坑越界)
題幹: K的因子中只包含2 3 5。滿足條件的前10個數是:2,3,4,5,6,8,9,10,12,15。 所有這樣的K組成了一個序列S,現在給出一個數n,求S中 >= 給定數的最小的數。 例如:n = 13,S中 >= 13的最小的數是15,所以輸出15。 Inpu
輸出一個一維陣列中的最大值、最小值、全部元素的和,並將此陣列中的值按逆序重新存放。例如原先a[0]~a[4]存放2 8 7 5 3,逆序存放後 a[0]~a[4]變為存放3 5 7 8 2
#include <iostream> using namespace std; int main() {int a[5],d[5],i,k,m,n,p,sum,b,c; cout<<"please enter five numbers:"; for
求1*3*5*7*(2*N-1)的值
*/ * 程式的版權和版本宣告部分 * Copyright (c)2012, 煙臺大學計算機學院學生 * All rightsreserved. * 檔名稱: array.cpp
題8:輸入5個數(含負數、小數)將它們按由小到大的順序排列起來 提示:需要排數的數字通過引數傳遞進來, 例如:輸入:./a.out -1 2.1 -3 5 7 輸出: -3 -1 2.1
題目:輸入5個數(含負數、小數)將它們按由小到大的順序排列起來 提示:需要排數的數字通過引數傳遞進來, 例如:輸入:./a.out -1 2.1 -3 5 7 輸出: -3 -1 2.1 #include <stdio.h> #include &l
1007 正整數分組 1010 只包含因子2 3 5的數 1014 X^2 Mod P 1024 矩陣中不重復的元素 1031 骨牌覆蓋
str clu 重復 裏的 方法 class 如果 oid true 1007 正整數分組 將一堆正整數分為2組,要求2組的和相差最小。 例如:1 2 3 4 5,將1 2 4分為1組,3 5分為1組,兩組和相差1,是所有方案中相差最少的。 Input