zoukankan      html  css  js  c++  java
  • (蓝桥杯)带分数


    100 可以表示为带分数的形式:100 = 3 + 69258 / 714
    还可以表示为:100 = 82 + 3546 / 197
    注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。
    类似这样的带分数,100 有 11 种表示法。

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

    例如:
    用户输入:
    100
    程序输出:
    11
    再例如:
    用户输入:
    105
    程序输出:
    6
     
    思路:将1到9全排列得到的每个全排列,思考在9个数字中添加+ / 使得带分数成立
    #include <cstdio>
    #include <string.h>
    #include <iostream>
    #include <algorithm>
    #include <sstream>
    #include <math.h>
    
    using namespace std;
    const int inf=0x7fffffff;
    const long long mod=1e9+7;
    const double PI=acos(-1);
    bool vis[15];
    int a[105];
    int n;
    int ans;
    void dfs(int pos){
        if(pos==10){                                      //dfs寻找1到9的全排列数组 
            int left=0;                                   //left表示整数部分 
            for(int i=1;i<=7;i++){   //分子和分母至少需要一位,所以i到7为止 
                left=left*10+a[i];
                if(left>=n){
                    break;
                }
                int up=0;                                //up分数的分子 
                for(int j=i+1;j<=8;j++){//分母至少需要一位,所以i到8为止 
                    up=up*10+a[j];
                    int down=0;                          //down分数的分母 
                    for(int k=j+1;k<=9;k++){
                        down=down*10+a[k];
                    }
                    if(left+up/down==n&&up%down==0){
                        ans++;
                    }
                }
            }
            return;
        }
        for(int i=1;i<=9;i++){                         //dfs全排列存入数组 
            if(!vis[i]){
                vis[i]=1;
                a[pos]=i;
                dfs(pos+1);
                vis[i]=0;
            }
        }
    }
    int main()
    {    
        cin>>n;
        dfs(1);
        cout<<ans;
        return 0;
    }
  • 相关阅读:
    JQuery基础知识总结
    抽象方法与虚方法
    关于性能的几个术语
    T-SQL基础知识
    学习materialize
    VS2013 启用avalon 智能提示 Intelligence
    推荐一款开源的C#TCP通讯框架
    js/jquery 获取本地文件的文件路劲 获取input框中type=‘file’ 中的文件路径(转载)
    HTML5的 input:file上传类型控制(转载)
    tinymce4.x 上传本地图片 (转载)
  • 原文地址:https://www.cnblogs.com/xusi/p/12435112.html
Copyright © 2011-2022 走看看