zoukankan      html  css  js  c++  java
  • 90. 带分数 (15分)

                  140. 带分数 (15分)
    C时间限制:3000 毫秒 | C内存限制:3000 Kb
    题目内容:

    100 可以表示为带分数的形式:100 = 3 + 69258 / 714

    还可以表示为:100 = 82 + 3546 / 197

    注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。

    类似这样的带分数,100 有 11 种表示法。

    题目要求:
    从标准输入读入一个正整数N (N<1000*1000)
    程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数。
    注意:不要求输出每个表示,只统计有多少表示法!


    例如:
    用户输入:
    100
    程序输出:
    11
    输入描述
    从标准输入读入一个正整数N (N<1000*1000)

    输出描述
    程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数。

    输入样例
    100

    输出样例
    11

    思路:将表达式表示为: n = left +  up / down; 的形式,然后枚举 left, down, 即可算出:up = (n - left) * down;

    注意枚举的范围.

    #include <iostream>
    #include <algorithm>
    #include <set>
    #include <vector>
    using namespace std;
    //int a[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    
    int main(){
     	int n;
     	cin >> n;
     	
     	int ans = 0;
     	int left, up, down;
     	for(int left = 1; left < n; left++){
     		for(int down = 1; down < 10000; down++){
     			int up = (n - left) * down;
    			int flag = 1;
    			int temp = 0, f = left, d = down, u = up;
    			int a[10] = {0};
    			while(f != 0){
    				temp = f % 10;
    				if(a[temp] != 0){
    					flag = 0;
    					break;
    				}
    				a[temp] = 1;
    				f /= 10;
    			}	
    			while(d != 0 && flag == 1){
    				temp = d % 10;
    				if(a[temp] != 0){
    					flag = 0;
    					break;
    				}
    				a[temp] = 1;
    				d /= 10;
    			}
    			while(u != 0 && flag == 1){
    				temp = u % 10;
    				if(a[temp] != 0){
    					flag = 0;
    					break;
    				}
    				a[temp] = 1;
    				u /= 10;
    			}
    			if(a[0] == 1){
    				flag = 0;
    			}
    			for(int j = 1; j <= 9 && flag; j++){
    				if(a[j] == 0){
    					flag = 0;
    					break;
    				}		
    			}
    			if(flag == 1){
    //				cout << left << " " << up << " " << down << "; " << up * 1.0 / down << endl;
    				ans++;
    			}
     		}
     	}
     	cout << ans << endl;
    	
    	return 0;
    }
    

      

  • 相关阅读:
    树莓派.安装Firefox浏览器
    树莓派.Raspberry Pi 3碰到"Unable to determine hardware version. I see: Hardware : BCM2835"错误的解决过程
    Linux.Centos6编译安装nginx
    树莓派.桌面分辨率设置
    [转]树莓派.设置自动重连WiFi
    树莓派.系统.官方下载中NOOBS和Raspbian的区别
    树莓派.设置无线网卡为AP工作模式(pi2和pi3)
    Nodejs.调用Linux命令
    树莓派.屏幕休眠控制
    GO语言.树莓派.环境安装和测试
  • 原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/10852686.html
Copyright © 2011-2022 走看看