您的位置:首页 > 其它

紫书章七例题 1——UVA 725 Division

2017-03-09 15:47 239 查看
题意,就是给你一个n, 问有没有5位数除五位数整除,商为n。其中五位数的最高位可以为0,然后他们的数字一定是不相同的,即0-9组成两个五位数。

然后思路还蛮好想的,就是将被除数暴力一遍嘛

但是其中感觉还是有个坑点,就是你要判断除数是不是五位数

如果没有的话,vis数组就会超空间了,然后n就会返回一个奇怪的值。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
int main()
{
//  freopen("D:\\input.txt","r",stdin);//这个一定记得要去掉啊啊
int n,temp=0;
while(scanf("%d",&n)!=EOF&&n){
int vis[150],flag=0;
if(temp!=0) printf("\n");
temp++;
for(int i=0;i<=9;i++){
for(int j=0;j<10;j++)
for(int k=0;k<10;k++)
for(int h=0;h<10;h++)
for(int p=0;p<10;p++){
memset(vis,0,sizeof(vis));
int ans=i*10000+j*1000+k*100+h*10+p;
ans=ans*n;
vis[i]=1,vis[j]=1,vis[k]=1,vis[h]=1,vis[p]=1;
if(ans>=100000) continue;//这个不加的话,后面的vis会超空间,会达到800左右
vis[ans/10000]=1,vis[(ans%10000)/1000]=1,vis[(ans%1000)/100]=1,vis[(ans%100)/10]=1,vis[(ans%10)]=1;
sort(vis,vis+10);
if(vis[0]==1) {flag=1;printf("%d / %d%d%d%d%d = %d\n",ans,i,j,k,h,p,n);}
}
}
if(!flag) printf("There are no solutions for %d.\n",n);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: