码迷,mamicode.com
首页 > 编程语言 > 详细

計算機算法設計與分析(作業)

时间:2019-10-27 00:49:18      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:open   stdin   style   omega   names   ora   input   define   pen   

 

渐进记号

 • 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;
}

 

計算機算法設計與分析(作業)

标签:open   stdin   style   omega   names   ora   input   define   pen   

原文地址:https://www.cnblogs.com/163467wyj/p/11746228.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!