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 }
  • 相关阅读:
    iPhone开发指南应用程序核心
    id,SEL,Nil,nil,IMP,Method,Class类型
    需求驱动赢得创新
    Linux内核list&hlist解读
    转载:x86的cpu_relax解析
    hadoop开发者第三期
    Hadoop开发者入门专刊
    Hadoop源代码eclipse编译指南
    高效的使用stl::map和std::set
    配置VIM语法高亮及自动缩进
  • 原文地址:https://www.cnblogs.com/hujunzheng/p/4356048.html
Copyright © 2011-2022 走看看