分治魔法石的诱惑
Posted scott527407973
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分治魔法石的诱惑相关的知识,希望对你有一定的参考价值。
问题 C: 【分治】魔法石的诱惑
时间限制: 1 Sec 内存限制: 128 MB提交: 88 解决: 37
[提交] [状态] [讨论版] [命题人:admin]
题目描述
修罗王远远地看见邪狼狂奔而来,问道:“慌慌张张地跑什么?”
邪狼大口大口地喘气:“我路过一家魔法石店,看到摆着那么多高阶魔法石,我就跑进去抢了一大袋。”
修罗王怒道:“光天化日,朗朗乾坤,众目睽睽之下,你也敢抢?” 邪狼:“我抢魔法石的时候,压根儿就没看见人,眼里只看见魔法石了。”
修罗王:“……”
其实邪狼的贪婪很容易理解,因为高阶魔法石有一个特征,即它的重量进行阶乘运算后末尾有几个0,就拥有同等重量普通魔法石几倍的魔法力。例如5!=5×4×3×2×1=120,而120结尾包含1个零,这意味着该魔法石拥有同等重量的普通的魔法石1倍的魔法力。你的任务是找到最小自然数N,使N!在十进制下包含Q个零。
输入
一个数Q(0≤Q≤108)
输出
如果误解,输出“No solution”,否则输出N。
样例输入
2
样例输出
10
1 #include <iostream> 2 3 using namespace std; 4 typedef long long ll; 5 ll get_minn(ll x) 6 { 7 ll ans=0; 8 while(x>0) 9 { 10 ans+=x/5; 11 x/=5; 12 } 13 return ans; 14 } 15 int main() 16 { 17 ll q; 18 cin>>q; 19 if(q==0) 20 { 21 cout<<"0"<<endl; 22 return 0; 23 } 24 ll n=0,temp=0; 25 while(temp<q) 26 { 27 n+=5; 28 temp=get_minn(n); 29 } 30 if(temp>q) 31 cout<<"No solution"<<endl; 32 else if(temp==q) 33 cout<<n<<endl; 34 // cout << "Hello world!" << endl; 35 return 0; 36 }
以上是关于分治魔法石的诱惑的主要内容,如果未能解决你的问题,请参考以下文章