UVa725 - Division
2015-09-07 11:15
274 查看
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn = 15; int vis[maxn]; int check(int n, int x) { memset(vis, 0, sizeof(vis)); int a, t; t = n / x; if(t < 10000) vis[0] = 1; //这步极为关键,刚开始没有这步,测试样例都过不了 //找了半天才发现。其实,如果出现前导0,一定是在 //分母,不可能出现在分子。 while(n) { a = n % 10; //标记整数的每一位数字。 vis[a] = 1; n /= 10; } while(t) { a = t % 10; vis[a] = 1; t /= 10; } for(int i = 0; i < 10; i++) { if(!vis[i]) return 0; // 当有一个没有标记时,直接返回0,说明不符合条件。 } return 1; } int main() { int n, flag, kase = 0; while(~scanf("%d", &n) && n) { flag = 0; if(kase++) printf("\n"); //刚开始这行写在下面注释的地方《1》,WA了一发,表示很迷茫 //因为并没有提示PE,注意UVa的风格,这种题一定要小心,只是在 //两行中间取空行,而第一行之前和最后一行之后是没有空行的,此处 //与HDU是有点区别的。 for(int i = 10000; i <= 99999; i++) { int t = i % n; //int k = i / n; if(t == 0 && check(i, n)) //整除并且包含0 ~ 9,则输出 { flag = 1; printf("%05d / %05d = %d\n", i, i/n, n); //有前导0,则用%05d的方式,左边一个可以不用。 } } //if(kase++) printf("\n"); 《1》 if(!flag) printf("There are no solutions for %d.\n", n); //之前没有符合条件的,则输出这一行。 //printf("\n"); //注释掉了前面跟kase有关的一行代码,WA了一发。 } return 0; }
View Code
相关文章推荐
- SecureZeroMemory和ZeroMemory的区别
- Oracle优化检查表
- css笔记
- do...while(0)的妙用
- 关于viewpager+fragment中嵌套viewpager+fragment的问题处理:
- SVN学习笔记5 -- SVN服务器的启动
- System.Windows.Forms中的Message Structure
- 操作系统性能监控-磁盘IO
- c语言字符数组与字符串的使用详解
- 禁用backspace网页回退功能
- vs2012 遇到 First_Chance Exception 的问题
- 静态注册的广播每次接收广播都会重新生成一个接收广播的对象
- 终于暂时解决了actionbar溢出菜单显示图标的问题
- MSSql Server基础学习系列———数据删除
- Android weight权重适配
- ashx入门
- centos 64位linux系统下安装appt(只有32位)命令的apktool工具包的笔记
- hadoop学习之hadoop完全分布式集群安装
- 使用MVC4 WebAPI 安装 helpPage
- POJ 2196 Specialized Four-Digit Numbers