資源限制
時間限制:1.0s 內存限制:128.0MB
問題描述
試計算在區間 1 到 n 的所有整數中,數字 x(0 ≤ x ≤ 9)共出現了多少次?例如,在 1到 11 中,即在 1、2、3、4、5、6、7、8、9、10、11 中,數字 1 出現了 4 次。
輸入格式
輸入文件名爲 count.in。
輸入共 1 行,包含 2 個整數 n、x,之間用一個空格隔開。
輸出格式
輸出文件名爲 count.out。
輸出共 1 行,包含一個整數,表示 x 出現的次數。
輸入輸出樣例
count.in
count.out
11 1
4
數據說明
對於 100%的數據,1≤ n ≤ 1,000,000,0 ≤ x ≤ 9。
解題思路:
該題要求用文件輸入,文件輸出,爲了方便就沒有做了,因爲提交的結果直接輸入輸出也是滿足條件的,這道題麻煩在於如何統計個數,我的方法是創建一個數組,有容量爲10,分別表示0——9這十個數的數量,把輸入的數字轉換成字符串,一位一位地比較,如果有目的的數字,則加一,這裏的加一用ASCII碼實現,方便快捷,當然還要注意超時問題,爲了解決這個問題,我寫了一個函數,這樣輸入一個數字就判斷一下的方式不會超時。代碼如下:
#include<bits/stdc++.h>
using namespace std;
int a[10];
void getNum(int number){
string s;
stringstream stream;
string temp;
stream << number;
stream >> temp;
s.append(temp);
char * c = (char*)s.c_str();
for (int j = 0; j < strlen(c); j ++){
a[c[j] - '0'] ++;
}
}
int main() {
int num, n;
cin >> num >> n;
for (int i = 1; i <= num; i ++){
getNum(i);
}
cout << a[n];
return 0;
}