• (寒假CF) 比赛要


    题意:给位数和位数和 求符合要求的最大值和最小值

    //想法都有了,可是却没有做粗来(你484傻啊⁽⁽ ◟(눈_눈)◞ ⁾⁾)

    Description

    You have a positive integer m and a non-negative integer s. Your task is to find the smallest and the largest of the numbers that have length m and sum of digits s. The required numbers should be non-negative integers written in the decimal base without leading zeroes.

    Input

    The single line of the input contains a pair of integers ms (1 ≤ m ≤ 100, 0 ≤ s ≤ 900) — the length and the sum of the digits of the required numbers.

    Output

    In the output print the pair of the required non-negative integer numbers — first the minimum possible number, then — the maximum possible number. If no numbers satisfying conditions required exist, print the pair of numbers "-1 -1" (without the quotes).

    Sample Input

    Input
    2 15
    Output
    69 96
    Input
    3 0
    Output
    -1 -1
     1 #include<stdio.h>
     2 #include<math.h>
     3 #include<algorithm>
     4 using namespace std;
     5 int main()
     6 {
     7     int m,s,s1,s2,i;
     8     int a[101],b[101];
     9     while(~scanf("%d %d",&m,&s))
    10     {
    11         int sum=0;
    12         if(m==1&&s==0)
    13         puts("0 0");
    14         else if(s>9*m||s==0)
    15         puts("-1 -1");
    16         else
    17         {
    18             s1=s2=s;
    19             for(i=m-1;i>=1;i--)
    20             {
    21                 if(s1>9)
    22                 {
    23                     a[i]=9;
    24                     s1-=9;
    25                 }
    26                 else if(s1>1)
    27                 {
    28                     a[i]=s1-1;
    29                     s1=1;
    30                 }
    31                 else if(s1==1)
    32                     a[i]=0;
    33             }
    34             a[0]=s1;
    35             for(i=0;i<m;i++)
    36             {
    37                 if(s2>9)
    38                 {
    39                     b[i]=9;
    40                     s2-=9;
    41                 }
    42                 else if(s2>0)
    43                 {
    44                     b[i]=s2;
    45                     s2=0;
    46                 }
    47                 else if(s2==0)
    48                     b[i]=0;    
    49             }
    50             for(i=0;i<m;i++)
    51             printf("%d",a[i]);
    52             printf(" ");
    53             for(i=0;i<m;i++)
    54             printf("%d",b[i]);
    55             printf("
    ");
    56         }
    57     }
    58     return 0;
    59 }


  • 相关阅读:
    lucene 3.0.2 search 各种各样的Query类型
    lucene 3.0.2 中文分词
    java 文件读写
    java 从args[]中赋值和程序直接赋值不一样?
    java 中文转换成Unicode编码和Unicode编码转换成中文
    Java栈与堆一篇好文
    lucene 3.0.2 操作进阶
    Lucene实战(第2版)》
    java工程包的命名(-dev.jar,-javadoc.jar,jar)
    POJ 3304 Segments (线段和直线相交 + 思维)
  • 原文地址:https://www.cnblogs.com/awsent/p/4284711.html
Copyright © 2020-2023  润新知