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 #include<cstdio>
     2 #include<string.h>
     3 
     4 int diff(int i,int j,int k)//判断i j k中每位数字都不同(简单!!!!!!!!)
     5 {
     6     int a[10];
     7     memset(a,0,sizeof(a));
     8     int m;
     9     while(i)
    10     {
    11         m=i%10;
    12         a[m]++;
    13         if(a[m]>1)
    14             return 0;
    15         i/=10;
    16     }
    17     while(j)
    18     {
    19         m=j%10;
    20         a[m]++;
    21         if(a[m]>1)
    22             return 0;
    23         j/=10;
    24     }
    25     while(k)
    26     {
    27         m=k%10;
    28         a[m]++;
    29         if(a[m]>1)
    30             return 0;
    31         k/=10;
    32     }
    33     if(a[0]!=0)   //数字1~9,不能取0
    34         return 0;
    35     for(i=1;i<=9;i++)
    36     {
    37         if(a[i]==0)       //数字1~9分别出现且只出现一次
    38             return 0;
    39     }
    40     return 1;
    41 }
    42 
    43 int main()
    44 {
    45     int n,i,j,k;
    46     int count=0;
    47     scanf("%d",&n);
    48     for(i=1;i<n;i++)//n-i>0
    49     {
    50         for(k=1;k<9999;k++)//i最少取1位,所以j和k最多取8位,因为j/k=整数,所以k不能比j大,k不能超过5位
    51         {
    52             if(i!=k)
    53             {
    54                 j=(n-i)*k;              // 原式100=82+3546/97
    55                 if(diff(i,j,k))              //  n  i   j  k         所以j=(n-i)*k   只要推到这步就好做了
    56                 {
    57                     printf("%d=%d+%d/%d
    ",n,i,j,k);
    58                     count++;
    59                 }
    60             }
    61         }
    62     }
    63     printf("%d
    ",count);
    64     return 0;
    65 }
  • 相关阅读:
    <转>iOS SDK中使用NSXMLParser解析XML
    [原创]闲来无事,写了个c#的数据库附加工具,现附上源代码
    [转载]php数组操作foreach、each、reset、list
    [原创]xml序列化
    [原创]一个简单的药店用的会员积分管理系统
    [原创]我的cms项目
    简洁、标准的对联广告代码
    C#混淆 xenocode使用说明
    .net 随机数
    [原创]c# as用法
  • 原文地址:https://www.cnblogs.com/youdiankun/p/3616724.html
Copyright © 2011-2022 走看看