2679:
2952:
ZOJ:2679先来~
水题大意:(题目大意:我什么时候改名了哇T T)
给你一个5位数的中间三个字母,还有一个数N让你求能被N整除的最大的五位数。
思路:
直接暴力枚举。。。。
#includeint num[6];int main(){ int T,n; scanf("%d",&T); while(T--) { scanf("%d",&n); scanf("%d%d%d",&num[2],&num[3],&num[4]); bool ok=false; for(int x=9;x>=1;x--) { num[1]=x; for(int k=9;k>=0;k--) { num[5]=k; int t=1,ans=0; for(int i=5;i>=1;i--,t*=10) ans=ans+ num[i]*t; if(ans % n ==0) { ok=true; printf("%d %d %d\n",x,k,ans/n); goto end; } } }end:; if(!ok) printf("0\n"); } return 0;}
ZOJ : 2952
水题大意:
找出所有小于2^31能被表示为n ^m的数。
思路:
传说中的打表。
用long long 防乘法的时候直接越界了。
#include#include using namespace std;typedef long long LL;const LL N=2147483648;const int MAXN=50000;int len=0;LL ans[MAXN];int main(){ for(LL i=2;i*i<=N;i++) { LL temp=i; while(true) { temp=temp*i; if(temp>=N) break; ans[len++]=temp; } } sort(ans,ans+len); printf("%d\n",ans[0]); for(int i=1;i