【問題描述】
mored 在學習完迴圈小數之後發現迴圈是個很美好的性質。自己只需要記住短短的迴圈
節以及迴圈次數(次數大於 1,且是整數)就可以記住整個數字了。
因為背誦數字變得方便了,mored 決定背誦[l,r]內的所有迴圈的整數。mored 的背誦
計畫有 t 天,但是他不知道每天具體要背多少個數,請你幫助 mored 計算出每天需要背誦
的數字個數。
如果 mored 在某天遇到乙個曾經背過的數字,他會義無反顧地重新背誦。
【輸入格式】
第一行給出乙個整數 t,表示 mored 計畫背誦 t 天的數字。
接下來 n 行,第 i 行給出 2 個整數 li,ri,表示 mored 第 i 天的背誦計畫。
【輸出格式】
輸出 t 行,每行乙個整數,表示第 i 天 mored 需要背誦的數字個數。
【輸入輸出樣例】
circulate.in circulate.out
31 10000
55555 66666
10 100
1082
9【資料範圍】
對於 30%的資料 t*max<=2*10^6
對於 70%的資料 max<=2*10^6
對於 100%的資料 t<=50000,1<=li<=ri<=2*10^18
【樣例解釋】
對於第 2 天,mored 只需要背誦 55555,66666.
對於第 3 天,mored 只需要背誦 11,22,33,44,55,66,77,88,99.
把乙個區間[l,r]分成兩個區間[1,l][1,r],然後分別計算各區間的數量,最後用右邊的區間減去左邊的區間即可。
至於中間查詢的過程= =。。。我能說是找規律嗎。。
#include//將乙個區間[l,r]分為[1,l]和[1,r]; 分別計算值 然後右邊的減去左邊的
#include#includeusing namespace std;
const int maxn=19;
char a[20];
char b[20];
int n;
long long num[20];
long long sum[20];
void prepare()//初始
int ans=0;
for(int i=1;ip-j;i--)//
long long q=0;
bool flag=false;
for(int i=p-j;i>0;i--)
}sum[j]=t-s-flag+1;
// printf("j=%d orz=%d\n",j,sum[j]);
for(int k=1;k
找位置 衝刺 noip
找位置 測試區 題目 farmer john 想找乙個最好的位置來建新農場,這樣他每天可以少走些路。fj 所在的區域,有n 個城鎮 1 n 10,000 城鎮之間,有m 1 m 50,000 條雙向路相連。所有城鎮都可以借助一些路相互連線。fj 需要你的幫助來選擇最合適建新農場的城鎮。k 1 k 5...
衝刺國賽2022 模擬賽2
題目描述 有乙個 n times n 的矩陣,初始時所有位置上都是 0 每次你可以選擇若干行 r 1,r 2.r p 和若干列 c 1,c 2.c q 把這些行列交點處的位置都變成 1 即把 r i,c j 1 leq i leq p,1 leq j leq q 這些位置上的數字都變成 1 n le...
noip模擬賽 密碼
表示沒看懂演算法3 問題描述 有壓迫,就有反抗。mored的寵物在法庭的幫助下終於反抗了。作為乙隻聰明的寵物,他打算把魔法使mored的魔法書盜去,奪取mored的魔法能力。但mored怎麼會讓自己的魔法書輕易地被盜取?mored在魔法書上設定了乙個密碼鎖,密碼鎖上有乙個問題。施以斯臥鋪魔法吧,你有...