time limit: 10 sec memory limit: 128 mb
submit: 50 solved: 27 [
submit][
status][
discuss]
小a正在研究一些數字統計問題。有一天他突然看到了乙個這樣的問題:
將[l..r]中的所有整數用m位二進位制數表示(允許出現前導0)。現在將這些數中的每乙個作如下變換:
從這個數的最低兩位開始,如果這兩位都是0,那麼x=1,否則x=0。現在將這兩位刪去,然後將x放在原來最低位的位置上。重複這個變換直到這個數隻剩下一位為止。
例如01001的變換過程如下:
01001-->0100-->011-->00-->1。
現在的問題是變換後的所有數中,值為y(y為0或1)的有多少個?
小a不會了,他想讓你幫助他完成這個問題。
輸入檔案包含多組測試資料。
第一行,乙個整數t,表示測試資料的組數。
接下來的t節,每節對應一組測試資料,格式如下:
第一行,兩個整數m、y。
第二行,兩個m位二進位制數l、r。
對於每組測試資料,輸出一行,乙個二進位制數,表示該組測試資料中[l..r]中的所有整數變換後的值為y的個數。這裡的二進位制數不允許出現前導0。 1
3 1001 101
11對於全部的資料,1<=m<=200,1<=t<=50。 [
submit][
status][
discuss]
題解:數字dp
這道題要寫二進位制高精哦。。。
我們先看上面的變換,正常來看應該是從低位向高位填,每次將填好的最後兩個變成他要求的0或1,但是這樣推沒法控制上下界。那麼倒著看上面的變換過程00->1 這個其實第一位的0就是原數的0,那麼也就是每次由一位變成兩位,這兩位中的第乙個一定是與原數一致的,第二個表示的是下面兩位的變換。
f[i][j][0/1][0/1]表示的是確定到第i位,下面兩位的變換結果為j,是否卡上下界。
#include#include#include#include#include#define n 203
using namespace std;
int n,m;
int a[n],b[n],t,st[n],top,opt;
char s[n];
struct number
number operator + (const number &a)
while (c.s[t+1])
c.len=t;
return c;
} number operator += (const number &a)
}ans,f[n][3][3][3],one;
bool pd(int x,int y)
void solve(int x)
for (int i=cnt;i>=1;i--) printf("%d",st[i]);
printf("\n");
}int main()
else
f[1][0][a[1]==0?1:0][b[1]==0?1:0]+=one;
}for (int i=1;i<=n-1;i++)
for (int j=0;j<=1;j++)
for (int a1=0;a1<=1;a1++)
for (int b1=0;b1<=1;b1++)
if (f[i][j][a1][b1].len!=0)
else if (a1)
else if (b1)
else
}else
else if (a1)
else if (b1)
else f[i+1][0][0][0]+=f[i][j][a1][b1];}}
for (int i=0;i<=1;i++)
for (int a1=0;a1<=1;a1++)
for (int b1=0;b1<=1;b1++)
else if (a1)
else if (b1)
else ans+=f[n-1][i][a1][b1];
}if (ans.len)
else printf("0\n");
//cout<
bzoj3780 數字統計
題意 將 l.r 中的所有整數用m位二進位制數表示 允許出現前導0 現在將這些數中的每乙個作如下變換 從這個數的最低兩位開始,如果這兩位都是0,那麼x 1,否則x 0。現在將這兩位刪去,然後將x放在原來最低位的位置上。重複這個變換直到這個數隻剩下一位為止。例如01001的變換過程 01001 010...
A 統計數字
time limit 1 sec memory limit 128 mb submit 51 solved 28 submit status web board 某次科研調查時得到了n個自然數,每個數均不超過1500000000 1.5 109 已知不相同的數不超過10000個,現在需要統計這些自然...
統計數字問題
在王曉東編著的 演算法設計與實驗題解 中看到的這個問題,問題描述如下 一本書的頁碼從自然數1開始順序編碼直到自然數n。書的頁碼按照通常的習慣編排,每個頁碼都不含多餘的前導數字0。例如第6頁用6表示而不是06或006。數字統計問題要求對給定書的總頁碼,計算出書的全部頁碼中分別用到多少次數字0,1,2,...