zoukankan      html  css  js  c++  java
  • Uva


    暴力求解,枚举fghij, 然后乘n之后把abcde加上组成一个字符串,如果字符串长度超过10,退出循环。把字符串排序之后应该和字符0123456789一一对应,就成功了。

    输入的时候注意要求两行输出有个空行,不要把空行在输出结果之后就打印,要在输入之前加一个判断,输出空行,这样最后输入0的时候就不会多打印一个空行。因为这个WA了两次,哭~~~

    AC代码:

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cctype>
    #include <cstring>
    #include <string>
    #include <sstream>
    #include <vector>
    #include <set>
    #include <map>
    #include <algorithm>
    #include <stack>
    #include <queue>
    #include <bitset> 
    #include <cassert> 
    
    using namespace std;
    
    
    
    int main()
    {
    	int n;
    	int kase = 0;
    	while (cin >> n && n) {
    		int cnt = 0;
    		char buf[99];
    		if (kase++) {
    			cout << endl;
    		}
    		for (int fghij = 1234;; fghij++) { // 从1234开始遍历
    			int abcde = fghij * n;
    			// 把数字合成字符串
    			sprintf(buf, "%05d%05d", abcde, fghij);
    			if (strlen(buf) > 10) { // 如果长度超过10,终止循环
    				break;
    			}
    			sort(buf, buf + 10); 
    			// 排序之后应该和0123456789一一对应,才算成功
    			bool flag = true;
    			for (int i = 0; i < 10; i++) {
    				if (buf[i] - '0' != i) {
    					flag = false;
    					break;
    				}
    			}
    			if (flag) {
    				cnt++;
    				printf("%05d / %05d = %d
    ", abcde, fghij, n);
    			}
    		}
    		if (!cnt) {
    			printf("There are no solutions for %d.
    ", n);
    		}
    	}
    
    	return 0;
    }




  • 相关阅读:
    ubuntu16.04安装ibus中文输入法
    apt --fix-broken install
    fuelgauge
    make flash FLASH_CONFIG=jtag_full
    使用android ndk编译boost动态库
    RK3288的gpio设置
    RK3288 GPIO 输出问题
    HDU-2586-裸LCA入门-tarjan离线
    uva-11324-SCC+dp
    HDU-2767-tarjan/Kosaraju求scc
  • 原文地址:https://www.cnblogs.com/zhangyaoqi/p/4591553.html
Copyright © 2011-2022 走看看