一、解法1
硬推公式:得到公式為n - (n / 5 + n / 6 + n / 8 - n / 30 - n / 40 - n / 24 + n /120)
**實現:
1 #include 2 #include 3 #include 4 #include 5 #include二、借助韋恩圖觀察6 #include 7 #include 8 #include 9 #include
10 #include 11 #include 12 #include 13
#define pii pair14
#define rep(i,z,n) for(int i = z;i <= n; i++)
15#define per(i,n,z) for(int i = n;i >= z; i--)
16#define ll long long
17#define db double
18#define vi vector19
#define debug(x) cerr << "!!!" << x << endl;
20using
namespace
std;
21inline ll read()
2232
while(ch >= '
0' && ch <= '9'
)36return s *r;37}
38 inline void
write(ll x)
3944
intmain()
45
三個圈代表5 和 6 和 8的倍數的數
首先我們求是5的倍數就是n/5
然後就是6的倍數就是n/6
然後就是8的倍數就是n/8
我們會發現多加了重複的部分(彩色部分)
也就是5和6的中間,5和8的中間,6和8的中間
然後就是減去n/30(30是5和6的最小公倍數)
然後就是減去n/24 (24是6和8的最小公倍數)
然後就是減去n/40(40就是5和8的最小公倍數)
我們發現會多減了5 和 6 和 8中間的一部分(藍色部分)
那我們就要加回來就是n/(120)(120是5和6和8的最小公倍數)
**實現如上
求1 n中1的個數
輸入乙個整數,求1 n這n個數的十進位制表示1的個數。將n的十進位制的每一位單獨拿出討論,每一位的值記為weight。1 個位 假若n 534。534的個位從0 9變化了53次,這53我們記為round。因為weight為4 0。因此第54輪為0 4,因此1出現了count round 1。若wei...
解決Hibernate中1 n的問題
一 1 n 在執行查詢時,傳送一條sql語句獲取n個主體物件,當需要使用這n個主體物件的關聯屬性時,hibernate又傳送n條sql語句查詢這個n個主體物件的關聯屬性,這就是1 n問題。listlist session.createquery from dept list 傳送一條sql語句查詢主...
1 n中1出現的次數
輸入乙個整數 n 求1 n這n個整數的十進位制表示中1出現的次數。例如,輸入12,1 12這些整數中包含1 的數字有1 10 11和12,1一共出現了5次。示例 1 輸入 n 12 輸出 5 示例 2 輸入 n 13 輸出 6 解析需要通過找規律來分析。假設我們對5014這個數字求解。1 個位上1出...