1. 程式人生 > >統計數字問題[演算法設計與分析]

統計數字問題[演算法設計與分析]

/*
 * NumberCount.cpp
 * Author: MagicYun
 */

#include <cstdio>
#include <cstdlib>
#include <iostream>

using namespace std;

int number[10]={0};

int Digit(int key)
{
 int ret = 0;
 
 while(key)
 {
  ret++;
  key /= 10;
 }
 
 return ret;
}

int main()
{
 int key;
 
 freopen("input.txt","rb",stdin);
 freopen("output.txt","wb",stdout);
 
 while(scanf("%d",&key) != EOF)
 {//從最高到最低位計算
  int tmp = key;
  int m,i,t,k = 1;
  t = Digit(tmp);
  for(i = 1;i < t; i++)k *= 10;
  memset(number,0,10*sizeof(int));
  
  while(tmp)
  {
   m = tmp / k;
   for(i = 1; i < m; i++)number[i] += k;
   number[m] += tmp % k + 1;
   for(i = 0; i < 10; i++)number[i] += m*((t-1)*k/10);
   tmp %= k;
   k /= 10;
   t--;
  }
  for(i = 0; i < 10; i++)printf("%d ",number[i]);printf("/n");
 }
 
 return 0;
}

相關推薦

演算法設計分析: 1-1 統計數字問題

1-1 統計數字問題 問題描述 一本書的頁碼從自然數1 開始順序編碼直到自然數n。書的頁碼按照通常的習慣編排, 每個頁碼都不含多餘的前導數字0。例如,第6 頁用數字6 表示,而不是06 或006 等。數 字計數問題要求對給定書的總頁碼n,計算出書的全

統計數字問題[演算法設計分析]

/* * NumberCount.cpp * Author: MagicYun */ #include <cstdio>#include <cstdlib>#include <iostream> using namespace std; i

數字三角形問題(簡單動態規劃)-演算法設計分析

const int maxn=100; int a[maxn][maxn]; int dp[maxn][maxn]; int main() { int n; cin>>n;

『嗨威說』演算法設計分析 - PTA 數字三角形 / 最大子段和 / 編輯距離問題(第三章上機實踐報告)

本文索引目錄: 一、PTA實驗報告題1 : 數字三角形   1.1  實踐題目   1.2  問題描述   1.3  演算法描述   1.4  演算法時間及空間複雜度分析 二、PTA實驗報告題2 : 最大子段和   2.1  實踐題目   2.2  問題描述   2.

演算法設計分析——動態規劃(一)矩陣連乘

動態規劃——Dynamic programming,可以說是本人一直沒有啃下的骨頭,這次我就得好好來學學Dynamic programming. OK,出發! 動態規劃通常是分治演算法的一種特殊情況,它一般用於最優化問題,如果這些問題能夠: 1.能夠分解為規模更小的子問題 2.遞迴的

演算法設計分析——分治法

前言 本文重點回顧了卜老師課堂上關於分治演算法的一些常見的問題。加油吧!ヾ(◍°∇°◍)ノ゙ 分治法(Divide and Conquer) 當面對一個問題的時候,我們可能一下子找不到解決問題的方法。此時,我們可以考慮將問題規模最小化,先看看當問題規模變小以後,我們如何去解決

演算法設計分析04-排序問題

①氣泡排序:量量比較待排序資料元素的大小,發現兩個資料元素的次序相反時進行交換,直到沒有反序的資料元素為止。時間複雜度是O(n*2)。穩定的。下面給出兩種排序演算法,我比較喜歡第二種,因為第二種才能真正解釋冒泡的原理 public class bubble1 {    &n

演算法設計分析03-十進位制轉二進位制問題

10進位制數轉2 進位制數 題目:2 進位制除了 0,1,還可以用 2 表示。例如: 1-> 1 2-> 10 or 02 3->11 4 ->100 or 020 or 012 問題:這樣一個十進位制數轉為二進位制數,就不是唯一的了。現求十進位制數 N 轉換為這種二進位制數

演算法設計分析02-走臺階問題

走臺階問題,一次可以走1,2,3級,都 N級臺階的方法數 。 初始:f(0) = 0; f(1) =1; f(2) = 1 + 1 = 2; 遞推公式:f(n) = f(n - 1) + f(n-2) + f(n - 3) 解題思路: 因為一次可以走1,2,3級,所以在第

演算法設計分析01-連結串列的逆置

一.最常用的方法: LNode*  ReverseList(LNode* head) {     if (head == NULL)         return NULL;  &nbs

演算法設計分析05-最近點對演算法

1.題目描述: 設S是平面上n個點的集合,在這一節中,我們考慮在S中找到一個點對p和q的問題,使其相互距離最短。換句話說,希望在S中找到具有這樣性質的兩點p1 = (x1,y1)和p2 = (x2,y2),使它們間的距離在所有S中點對間為最小 2.解題思路 一共分為三種情況 情況1:

演算法設計分析課程的時間空間複雜度

演算法設計與分析課程的時間空間複雜度: 總結 演算法 時間複雜度 空間複雜度 說明 Hanoi $ O(2^n) $ $ O(n) $ 遞迴使用 會場安排問題 \(O

【計算機演算法設計分析】——SVM

一.簡介 支援向量機(support vector machines)是一種二分類模型,它的目的是尋找一個超平面來對樣本進行分割,分割的原則是間隔最大化,最終轉化為一個凸二次規劃問題來求解。由簡至繁的模型包括: (1)當訓練樣本線性可分時,通過硬間隔最大化,學習一個線性可分支援向量機;(2)當訓練樣本近似

演算法設計分析作業題】第十一週:20. Valid Parentheses

題目 C++ solution class Solution { public: bool isValid(string s) { stack<char> cstack; for (int i = 0; i < s.si

演算法設計分析》第十一週作業

《演算法設計與分析》第十一週作業 標籤(空格分隔): 課堂作業 文章目錄 《演算法設計與分析》第十一週作業 @[toc] 題目概要 思路 具體實現 心得 原始碼:

演算法設計分析》第十二週作業

《演算法設計與分析》第十二週作業 標籤(空格分隔): 課堂作業 文章目錄 《演算法設計與分析》第十二週作業 @[toc] 題目概要 思路 具體實現 心得 原始碼:

演算法設計分析》第十週作業

《演算法設計與分析》第十週作業 標籤(空格分隔): 課堂作業 文章目錄 《演算法設計與分析》第十週作業 @[toc] 題目概要 思路 具體實現 心得 原始碼:

演算法設計分析》第九周作業

《演算法設計與分析》第九周作業 標籤(空格分隔): 課堂作業 文章目錄 《演算法設計與分析》第九周作業 @[toc] 題目概要 思路 具體實現 心得 原始碼:

演算法設計分析》第八週作業

《演算法設計與分析》第八週作業 標籤(空格分隔): 課堂作業 文章目錄 《演算法設計與分析》第八週作業 @[toc] 題目概要 思路 具體實現 心得 原始碼:

演算法設計分析》第七週作業

《演算法設計與分析》第七週作業 標籤(空格分隔): 課堂作業 文章目錄 《演算法設計與分析》第七週作業 @[toc] 題目概要 思路 具體實現 心得 原始碼: