zoukankan      html  css  js  c++  java
  • AtCoder-3867

    Find the maximum possible sum of the digits (in base 10) of a positive integer not greater than N.

    Constraints

    • 1N1016
    • N is an integer.
    Input

    Input is given from Standard Input in the following format:

    N
    
    Output

    Print the maximum possible sum of the digits (in base 10) of a positive integer not greater than N.

    Sample Input 1

    100
    
    Sample Output 1

    18
    

    For example, the sum of the digits in 99 is 18, which turns out to be the maximum value.

    Sample Input 2

    9995
    
    Sample Output 2

    35
    

    For example, the sum of the digits in 9989 is 35, which turns out to be the maximum value.

    Sample Input 3

    3141592653589793
    
    Sample Output 3

    137


    题解:

    其实只要比较原数所有位上的和与原数最大为减一其他为变为9后所有的和就可以啦。


    AC代码为:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    
    int Sum(long long n) 
    {
    	int res = 0;
    	while (n > 0) 
    	{
    		res += n % 10;
    		n /= 10;
    	}
    	return res;
    }
    int main() 
    {
    	long long n, temp;
    	cin >> n;
    	int ans = Sum(n);
    	temp = n;
    	long long cnt = 1;
    	while (temp >= 10) 
    	{
    		temp /= 10;
    		cnt *= 10;
    	}
    	ans = max(ans, Sum(n / cnt * cnt - 1));
    	cout << ans << endl;
    	return 0;
    }
    



  • 相关阅读:
    php 删除指定文件夹
    php 批量进行复制文件
    php 导入/导出 csv 文件
    Java8 Nashorn JavaScript引擎
    Java8 Optional类
    Java8数据流
    Java8默认方法
    异常的其他问题
    package和import语句_5
    继承和权限控制_1
  • 原文地址:https://www.cnblogs.com/csushl/p/9386610.html
Copyright © 2011-2022 走看看