• 最后一位


    题目描述

    牛牛选择了一个正整数X,然后把它写在黑板上。然后每一天他会擦掉当前数字的最后一位,直到他擦掉所有数位。 在整个过程中,牛牛会把所有在黑板上出现过的数字记录下来,然后求出他们的总和sum.
    例如X = 509, 在黑板上出现过的数字依次是509, 50, 5, 他们的和就是564.
    牛牛现在给出一个sum,牛牛想让你求出一个正整数X经过上述过程的结果是sum.

    输入描述:

    输入包括正整数sum(1 ≤ sum ≤ 10^18)

    输出描述:

    输出一个正整数,即满足条件的X,如果没有这样的X,输出-1。

    解题思路:

    经过一系列擦操作之后:abc + ab + a = 564;

    即:(a * 100 + b * 10 + c) + (a * 10 + b) + (a) =564;

    即 :111 * a + 11 * b + 1 * c = 564;

    对于四位数有1111*a+11*b+1*c+*d=x;

    首先0<a<10,b<10,c<10,d<10;

    可以给出一个求len位1的函数

    之后x再减去len位1*a,相同的方法可以求得b

    代码如下:

    #include <iostream>
    #include <string>
    #include <cmath>
    #include<iomanip>
    /*
    用例:
    837592744927492746
    对应输出应该为:
    -1
    你的输出为:
    753833470434743470
    */
    using namespace std;
    long long give(int len);
    int main()
    {
        string sum;
        int a[100],top=0;
        long long num_sum=0;
        cin>>sum;
    
        for(int i=0;i<sum.size();i++)
        {
           // num_sum+=(sum[i]-'0')*pow(10.0,sum.size()-1-i);这个不知道为甚麽是错的
           num_sum=num_sum*10+(sum[i]-'0');//这个是对的
        }//当i=12时发生错误,i>10
         //当i=0时num_sum=799999999999999999为甚麽不是800000000000000000
        // long long t=num_sum;
       // cout<<num_sum;return 0;//为甚麽转化出来的整数是错的
        //sum_size=sum.size();
        for(int i=sum.size();i>=1;i--)
        {
            a[top]=num_sum/give(i);
            num_sum=num_sum-a[top]*give(i);
            top++;
        }
        //cout<<top<<'
    ';
        for(int i=0;i<top;i++)
        {
        if(a[i]>=10)
        {
        cout<<-1;return 0;
        }
        }
        for(int i=0;i<top;i++)
        {
        
        cout<<a[i];
        }
    
    //    for(int i=11;i>=3;i--)
    //    cout<<give(i)<<endl;
    }
    
    long long give(int len)//提供len位1
    {
        long long sum=0;
        while(len-->0)
        {
            sum=sum*10+1;
        }
        return sum;
    }//837592744927492746
    不一样的烟火
  • 相关阅读:
    vue长按事件
    video标签视频自动播放
    express路由的使用
    Java的堆栈和堆
    MongoDB建库db、建集合collection以及其他常用命令
    计算机网络基础-目录
    如何清除tomcat缓存
    tomcat/logs目录下各日志文件的解析
    在Windows系统和Linux服务器安装MongoDB和基本使用
    [转]/tomcat/conf/server.xml配置文件的源码解析
  • 原文地址:https://www.cnblogs.com/cstdio1/p/11031064.html
Copyright © 2020-2023  润新知