題目描述
試計算在區間 1 到 n 的所有整數中,數字x(0≤x≤9)共出現了多少次?例如,在 1到 11 中,即在 1,2,3,4,5,6,7,8,9,10,11 中,數字 1 出現了 4 次。
輸入格式
2個整數n,x之間用乙個空格隔開。
輸出格式
1個整數,表示x出現的次數。
輸入輸出樣例
輸入樣例#1
11 1
輸出樣例#14
說明/提示
對於 100%的資料,1≤n≤1,000,000,0≤x≤9。
題目思路
nlog(n)解法
#include#define ll long long int
using namespace std;
int main()
while(t);
}printf("%lld",sum);
return 0;
}
log(10n)解法
如:n=728,x=7
可以按照這樣的思路:
個位7:73個 7,17,...,727
十位7:70個 70~79,170~179,...,670~679
百位7:29個 700~728
答案是172
#includeusing namespace std;int main()
{ int n,x,m=1,ans=0;
scanf("%d%d",&n,&x);
while(m<=n)
{int a=n/(m*10),b=n/m%10,c=n%m; //a,b,c為n的三部分,求哪一位x的個數,b就為那一位數,a為b左邊的數,c為b右邊的數,如求1~728中十位7的個數,則a=7,b=2,c=8
if(x)
{if(b>x) ans+=(a+1)*m; //如果b>x,說明有(a+1)*m個x(如求1~728中個位7的個數,則為(72+1)*1=73)
if(b==x) ans+=a*m+c+1; //如果b=x,說明有a*m+c+1個x(如求1~728中百位7的個數,則為0*100+28+1=29)
if(b
(洛谷)P1980 計數問題 提交
涉及變數很多的程式一定要寫清注釋 include using namespace std int main b b 10 cout num endl return 0 2.用函式的方式 include using namespace std void js int n,int x b b 10 co...
P1980 計數問題
題目描述 試計算在區間 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,之間...
P1980 計數問題
試計算在區間 11 到 nn的所有整數中,數字x 0 x 9 x 0 x 9 共出現了多少次?例如,在 11到1111中,即在 1,2,3,4,5,6,7,8,9,10,111,2,3,4,5,6,7,8,9,10,11 中,數字 11 出現了 44 次。輸入格式 22個整數n,xn,x,之間用乙個...