链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
jbgg 喜欢把数字拼起来玩,比如把 123 和 456拼接成 123456 或者 456123。
有一天 jbgg 看到 yyjj 手上有 个 n ,希望 yyjj 把这 m 个 n 给他玩。于是 yyjj 让 jbgg 从 m 个 n中选任意个 n 拼接,使得这个拼接后的数 pmodp 最大。
jbgg 轻松的完成了 yyjj 的要求并且得到了所有 n ,聪明的你知道 jbgg 拼接出的数 pmodp 后是多少吗?
mod 为取模运算符,如 11mod4=3。
输入描述:
输入仅一行,包含两个正整数 n,m 和一个素数 p,其中 1⩽n,m⩽10的15, 5<p<106。 提示:int 类型最大值是 2的31−1<10的15,更大的范围可以使用 long long。输出描述:
输出一个正整数,表示 jbgg 拼接出的数 pmodp 的值。示例1
输入
1 3 7输出
6说明
3 个 1 可以拼接成 1,11,111,它们 pmodp 的值分别为 1,4,6,因此答案为 6。示例2
输入
13 5 17输出
13说明
此样例中,
13mod17=13
1313mod17=4
131313mod17=5
13131313mod17=3
1313131313mod17=7
因此答案为 13
没搞太明白,先放在这里
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
long long n,m,p;
cin>>n>>m>>p;
long long ans=0,res=0,temp=n,cnt=1;
while(temp){
temp/=10;
cnt=(cnt*10)%p;
}
for(int k=1;k<= (m < p ? m : p);k++){
res=(res*cnt+n)%p;
ans=max(ans,res);
}
cout<<ans<<endl;
return 0;
}