題意
給定兩個整數 l 和 r ,對於所有滿足1 ≤ l ≤ x ≤ r ≤ 10^9 的 x ,把 x 的所有約數全部寫下來。對於每個寫下來的數,只保留最高位的那個數碼。求1~9每個數碼出現的次數。
思路首先我們只需要能求出從1到x的答案,然後減就好了,對於不超過x√
的數,就要在這個的最高位的計數上加x/
x√,並記錄下x/
x√,放到棧中,對於超過x√
的數,就會有一段數作為約數出現在1到x中的次數都相等,而這個界線就是之前存在棧裡的那些數,此時我們需要做的是能夠求出1到y中對每個數取最高位那麼1到9出現的次數,然後相減即可,經過這兩步就可以得到題目要的結果
**
#include
#include
#include
using
namespace
std;
long
long ans1[10],ans2[10],ad1[10],ad2[10];
long
long hdigit(long
long x)
void calc2(long
long x,long
long *d)
temp=1;
for(long
long i=0;i1;i++)
for(long
long i=1;i1;
return;
}void calc(long
long x,long
long* d)
while(!st.empty())
if(st.empty())
break;
calc2(st.top(),ad1);
calc2(e,ad2);
//printf("e:%lld sttop:%lld\n",e,st.top());
for(long
long i=1;i<=9;i++)
e=st.top();
}return;
}int main()
美團 CodeM 資格賽 數碼 詳解
time limit 1 sec memory limit 256 mb description 給定兩個整數 l 和 r,對於任意 x,滿足l x r 把 x 的所有約數全部寫下來。對於每個寫下來的數,只保留最高位的那個數碼。求 1,9 中每個數碼出現的次數。輸入格式 輸入一行兩個整數 l 和 r...
CodeM資格賽D 送外賣 題解
題意 n 個小區排成一列,編號為從 0 到 n 1 一開始,美團外賣員在第0號小區,目標為位於第 n 1 個小區的配送站。給定兩個整數數列 a 0 a n 1 和 b 0 b n 1 在每個小區 i 裡你有兩種選擇 1 選擇a 向前 a i 個小區。2 選擇b 向前 b i 個小區。把每步的選擇寫成...
2018 CodeM 資格賽 下單
這道題目應該算簽到題了吧 我大概掃了一下,感覺這道題目應該是最簡單的 注 如果您現在還沒有ac,並且比賽還沒有結束,我建議再想想,認真再重新讀下題目描述,或許你就會發現原來是自己想複雜了 不管你是不是這樣的情形,反正我當時是這樣的,哈哈 程式設計 1000分 下單 時間限制 c c 1秒,其他語言 ...