zoukankan      html  css  js  c++  java
  • C. Given Length and Sum of Digits...(思维题)

    题意:给出两个数,m和s,m表示数字的位数(长度),s表示各个位上数字之和。输出符合条件的最大数和最小数。如果找不到符合条件的数就输出“-1 -1”。

    题解:先考虑不符合条件的数,每个位上最大能放“9”,如果和大于位数x9,就找不到对应的值啦。当和大于0,但是位数等于0时,也不能找到对应的值啊。输出最大值的话,把最大的值放在高位上,不足就补0就好啦。输出最小值,就把大的数排在最低位,在高位补0就行了。但是最高位不能为0,就去找不为0的最高位,分一个1给最高位。

    ACcode:

    int main()

    {

    int a[110], b[110];

    int n, m;

    cin >> n >> m;

    if (n == 1 && m == 0)

    cout << 0 << " " << 0;

    else if (n * 9 < m || m < 1)

    cout << -1 << " " << -1;

    else

    {

    int s =m;

    for (int i = n; i >= 1; i--)

    {

    a[i] = min(s, 9);

    s = s - min(s, 9);

    }

    if (a[1] == 0)

    {

    for(int i=1;i<=n;i++)

    {

    if (a[i] != 0)

    {

    a[i] = a[i] - 1;

    a[1] = 1;

    break;

    }

    }

    }

    s = m;

    for (int i = 1; i <= n; i++)

    {

    b[i] = min(s, 9);

    s = s - min(s, 9);

    }

    for (int i = 1; i <= n; i++)

    cout << a[i];

    cout << " ";

    for (int i = 1; i <= n; i++)

    cout << b[i];

    }

    return 0;

    }

  • 相关阅读:
    echars柱状图修改每条柱的颜色
    vue打开到新页面,并传递参数
    彻底了解websocket原理
    bind和on的区别
    Vue如何更新子组件
    Vue父子组件生命过程
    使用css3实现动画来开启GPU加速
    前端技术体系
    Vue中的~(静态资源处理)
    垂直居中的办法小结
  • 原文地址:https://www.cnblogs.com/Uiney117/p/14373281.html
Copyright © 2011-2022 走看看