1076 K尾相等数
时间限制:500MS 内存限制:65536K
提交次数:251 通过次数:80
题型: 编程题 语言: C++;C
Description
从键盘输入一个自然数K(99999999>K>1),若存在自然数M和N(M>N),使得K的M次方和K的N次方均大于或等于1000, 且它们的未尾三位数相等,则称M和N是一对“K尾相等数”。请编程序,输出K尾相等数中M+N最小值。
输入样例
2
输出样例
120

#include<cstdio> #include<cstring> int powermod(int a,int b) { int ans=1; a=a%1000; if(!a) return 0; while(b) { if(b%2==1) ans=ans*a%1000; a=a*a%1000; b/=2; } return ans; } int main() { int res; int i,j=0,t,k,p; int a[1005]; int leap=0; scanf("%d",&k); //下面的if else 语句,当k为对应值时,恰好其p次方超过一千 if(k==2) p=10; else if(k==3) p=7; else if(k==4||k==5) p=5; else if(k==6||k==7||k==8||k==9||k==10) p=4; else if(k>=11&&k<=31) p=3; else if(k>=32&&k<=999) p=2; else p=1; for(i=p; i<=1001; i++) { res=powermod(k,i); a[j++]=res; //下面for循环用于判断之前有没有出现和这次求得的a[j-1]相同的值 for(t=0; t<j-1; t++) if(a[j-1]==a[t]) { leap=1; break; } if(leap) break; } //数组的下标从0开始,而代表幂的循环从p开始 printf("%d\n",(j-1+p)+(t+p)); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧