首页 > 其他 > 详细

带分数

时间:2020-02-21 19:06:58      阅读:420      评论:0      收藏:0      [点我收藏+]

蓝桥杯 2013年 带分数

100 可以表示为带分数的形式:100 = 3 + 69258 / 714。
还可以表示为:100 = 82 + 3546 / 197。
注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。
类似这样的带分数,100 有 11 种表示法。
输入
从标准输入读入一个正整数N (N< 1000*1000)
输出
程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数。
注意:不要求输出每个表示,只统计有多少表示法!
样例输入
100
样例输出
11

        #include<iostream>
        #include<algorithm>
        #include<stdio.h>
        using namespace std;
        int a[10]={0,1,2,3,4,5,6,7,8,9};
        int n;
        int ans=0;
        int getnum(int x,int y)
        {  int num=0;
          for(int i=x;i<=y;i++)
              num=num*10+a[i];
            return num;
      
         }
         void judge()
        {  int i,j;
           for(i=1;i<=7;i++)
         {
           int intage=getnum(1,i);//因为是最大的数1*10^6,所以只用收取前6位数
            for(j=(i+1);j<=9;j++)
            {
           int fz=getnum(i+1,j-1);//从i向后到j找分子
            int fm=getnum(j,9);
             if(intage+fz/fm==n&&(fz%fm)==0)
               ans++;
       }        
    
       }
       }
       int main()
       {cin>>n;
         do{
       judge();//因为是不允许出现相同的数字,就用全排列来判断,从中截取数 向其中插入 + /符号得到答案。
       }while(next_permutation(a+1,a+10));
      cout<<ans<<endl;
       return 0;
    }

带分数

原文:https://www.cnblogs.com/arbor-one/p/12342304.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!