zoukankan      html  css  js  c++  java
  • 第四届蓝桥杯c/c++B组9

    题目描述:

    100 可以表示为带分数的形式:100 = 3 + 69258 / 714
    还可以表示为:100 = 82 + 3546 / 197
    注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。
    类似这样的带分数,100 有 11 种表示法。
    题目要求:
    从标准输入读入一个正整数N (N<1000*1000)
    程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数。
    注意:不要求输出每个表示,只统计有多少表示法!
    例如:
    用户输入:
    100
    程序输出:
    11
    再例如:
    用户输入:
    105
    程序输出:
    6
    资源约定:
    峰值内存消耗 < 64M
    CPU消耗  < 3000ms
    请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
    所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
    注意: main函数需要返回0
    注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
    注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。
    提交时,注意选择所期望的编译器类型

    #include<iostream> 
    using namespace std;
    int arr[12], brr[12], s, k=0;
    int f(int n, int m){
      int sum=0;
      for (int i=n; i<=m; i++){
        sum=sum*10+arr[i];
      }
      return sum;
    }
    void dfs(int i){
      if (i==10){
        int a, b, c;
        for (int i=1; i<=7; i++){
          a=f(1, i);
          for (int j=i+1; j<=8; j++){
            b=f(i+1, j);
            c=f(j+1, 9);
            if (b>c&&b%c==0&&s==a+b/c){
              cout<<a<<" "<<b<<"/"<<c<<endl;
              k++;
            }
          }
        } 
      }
      else{
        for (int j=1; j<=9; j++){
          if (!brr[j]){
            arr[i]=j;
            brr[j]=1;
            dfs(i+1);
            brr[j]=0;
          }
        }
      }
    }
    int main(){
      cin>>s;
      dfs(1);
      cout<<k;
    return 0; }

      

  • 相关阅读:
    VB 进程权限提升 代码
    不錯的超超鏈接title效果以及一個輸入flash的js
    关于用Virtual PC 2004 SP1装Red Hat Linux花屏的问题
    apache2+mysql5+php5在linux下的安装过程
    DEBUG命令详解
    VBKiller使用说明
    Intel奔騰系列CPU指令全集(包含P4)
    微代码和汇编语言的区别
    用DELPHI为ASP开发文件上载组件
    一個不錯的超鏈接的title效果
  • 原文地址:https://www.cnblogs.com/a863886199/p/6580746.html
Copyright © 2011-2022 走看看