zoukankan      html  css  js  c++  java
  • 蓝桥杯 历届试题 带分数

      历届试题 带分数  
    时间限制:1.0s   内存限制:256.0MB
          
    问题描述
    100 可以表示为带分数的形式:100 = 3 + 69258 / 714。
    
    还可以表示为:100 = 82 + 3546 / 197。
    
    注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。
    
    类似这样的带分数,100 有 11 种表示法。
    
    输入格式
    从标准输入读入一个正整数N (N<1000*1000)
    
    输出格式
    程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数。
    
    注意:不要求输出每个表示,只统计有多少表示法!
    
    样例输入1
    100
    样例输出1
    11
    样例输入2
    105
    样例输出2
    6
    
     1 #include<iostream> 
     2 #include<cstring>
     3 #include<cstdio>
     4 #include<algorithm>
     5 using namespace std;
     6 int a[]={1, 2, 3, 4, 5, 6, 7, 8, 9};
     7 int num[3];
     8 int n, ans;
     9 void dfs(int cur, int cnt){
    10     if(cnt > 1){//最后一段 
    11         num[cnt] = 0;
    12         for(int i=cur; i<9; ++i)
    13             num[cnt] = num[cnt] * 10 + a[i];
    14         if(num[1]%num[2]==0 && num[0] + num[1]/num[2] == n) ++ans;
    15         return ;
    16     }
    17     
    18     int dd = 6+cnt;
    19     for(int i=cur; i<=dd; ++i){
    20         num[cnt] = 0;
    21         for(int j=cur; j<=i; ++j)
    22             num[cnt] = num[cnt] * 10 + a[j];
    23         dfs(i+1, cnt+1);
    24     }
    25 }
    26 
    27 int main(){
    28     while(scanf("%d", &n) != EOF){
    29         sort(a, a+9);
    30         ans = 0;
    31         do{
    32             dfs(0, 0);//将每一个排列分成三段 
    33         }while(next_permutation(a, a+9));
    34         printf("%d
    ", ans);
    35     }
    36     return 0;
    37 }
  • 相关阅读:
    设计模式之工厂模式-抽象工厂(02)
    1036 跟奥巴马一起编程 (15 分)
    1034 有理数四则运算 (20 分)
    1033 旧键盘打字 (20 分)
    1031 查验身份证 (15 分)
    大学排名定向爬虫
    1030 完美数列 (25 分)二分
    1029 旧键盘 (20 分)
    1028 人口普查 (20 分)
    1026 程序运行时间 (15 分)四舍五入
  • 原文地址:https://www.cnblogs.com/hujunzheng/p/4356048.html
Copyright © 2011-2022 走看看