題目描述:
請統計某個給定範圍 [l, r]的所有整數中,數字 2 出現的次數。
比如給定範圍 [2, 22],數字 2 在數 2 中出現了 1 次,在數 12 中出現 1 次,在數 20 中出現 1 次,在數 21 中出現 1 次,在數 22 中出現 2 次,所以數字 2 在該範圍內一共出現了 6 次。
輸入:2 個正整數 l 和 r,之間用乙個空格隔開。
輸出:數字 2 出現的次數。
分析:因為是單組資料,所以可以直接for一遍從l到r,然後將每個數字的每一位分離出來,這就需要乙個迴圈依次取出每一位,有乙個2,計數器就+1,然後輸出即可。因為平時的輸入資料一般是多組,所以習慣性地打表記錄做到每次o(1)的查詢,用乙個字首和陣列sum維護到第幾個數字的時候2所出現的次數,最後輸出sum[r]-sum[l-1]即可。
#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define clear(x) memset(x,0,sizeof(x))
#define fup(i,a,b) for(int i=a;ib;i--)
#define rfdn(i,a,b) for(int i=a;i>=b;i--)
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
const int maxn =1e5+7;
int sum[maxn];
int read()
while(ch>='0'&&ch<='9')
return f*ret;
}void slove()
sum[i]+=cnt;
sum[i]+=sum[i-1];
}}int main()
NOIP2010 普及組 數字統計
題目鏈結 題目描述 請統計某個給定範圍 l,r 的所有整數中,數字 2 出現的次數。比如給定範圍 2,22 數字 2 在數 2 現了 1 次,在數 12 現 1 次,在數 20 現 1次,在數 21 現 1 次,在數 22 現 2次,所以數字 2 在該範圍內一共出現了 6次。輸入格式 2個正整數 l...
noip2010 關押罪犯
s 城現有兩座監獄,一共關押著n 名罪犯,編號分別為1 n。他們之間的關係自然也極 不和諧。很多罪犯之間甚至積怨已久,如果客觀條件具備則隨時可能爆發衝突。我們用 怨 氣值 乙個正整數值 來表示某兩名罪犯之間的仇恨程度,怨氣值越大,則這兩名罪犯之 間的積怨越多。如果兩名怨氣值為c 的罪犯被關押在同一監...
NOIP2010關押罪犯
s 城現有兩座監獄,一共關押著n 名罪犯,編號分別為1 n。他們之間的關係自然也極不和諧。很多罪犯之間甚至積怨已久,如果客觀條件具備則隨時可能爆發衝突。我們用 怨氣值 乙個正整數值 來表示某兩名罪犯之間的仇恨程度,怨氣值越大,則這兩名罪犯之間的積怨越多。如果兩名怨氣值為c 的罪犯被關押在同一監獄,他...