渐进记号
• O:若∃?? > 0, ??0 > 0: ∀?? ≥ ??0, 0 ≤ ?? ?? ≤ ?? ⋅ ??(??),则称??(??) = ??(?? ?? )
• Ω:若∃?? > 0, ??0 > 0: ∀?? ≥ ??0, 0 ≤ ?? ⋅ ??(??) ≤ ?? ?? ,则称?? ?? = Ω(?? ?? )
• ?:若?? ?? = ??(?? ?? )且?? ?? = Ω(?? ?? ),则称?? ?? = ?(?? ?? )
• o:若∀?? > 0, ∃??0> 0: ∀?? ≥ ??0, 0 ≤ ?? ?? < ?? ⋅ ??(??),则称??(??) = ??(?? ?? )
• ω:若∀?? > 0, ∃??0> 0: ∀?? ≥ ??0, 0 ≤ ?? ⋅ ?? ?? < ?? ?? ,则称?? ?? = ω(?? ?? )
統計 1~n 的頁碼中 0~9數字出現次數
1 ~ 1eX 0~9的出現次數都爲 (X-1)*1e(X-2)
#include<bits/stdc++.h> using namespace std; #define ll long long #define _for(i,a,b) for(int i = (a); i < (b); i++) #define _rep(i,a,b) for(int i = (a); i <= (b); i++) int main(){ freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); int n; while(cin >> n){// 例如 2143 int x = ceil(log10(n+1));// 防止尾數為 1 死循環 int cnt[10] = {}; _for(i,0,x){ int r = ceil(log10(n+1));// 如上 int k = n/pow(10, r-1); _for(j,0,10) cnt[j] += k*(r-1)*pow(10, r-2);// 記錄小於 000~999 的 0~9 的出現次數 _for(j,0,k) cnt[j] += (int)pow(10, r-1);// 記錄 整數 0XXX 1XXX 的 0 與 1 的出現次數 cnt[k] += n%(int)pow(10, r-1)+1;// 記錄 2XXX 的 2 出現次數 n %= (int)pow(10, r-1); // 如法炮製 143 43 3 } _for(i,0,x) cnt[0] -= pow(10, i); _for(i,0,10) cout << cnt[i] << endl; } return 0; }
原文地址:https://www.cnblogs.com/163467wyj/p/11746228.html
时间: 2024-10-10 15:13:24