LLLYYY的数字思维(模拟题)

Posted chenchen-12

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LLLYYY的数字思维(模拟题)相关的知识,希望对你有一定的参考价值。

链接:https://ac.nowcoder.com/acm/contest/318/G


LLLYYY很喜欢写暴力模拟贪心思维。某一天在机房,他突然抛给了队友ppq一
个问题。问题如下:
有一个函数f ():
int f(int x){
    int tmp = 0;
    while(x != 0){
    tmp += x % 10;
    x /= 10;
    }
    return tmp;
}
接着LLLYYY给定一个整数 c,要求在c范围内找两个整数a和b,使得a + b = c,且f(a) + f(b)的值最大。

输入描述:

采用多组输入方式。
每行输入一个整数 c (1c1012)。

输出描述:

对于每一个 c,找到一组 a,b ,使 f(a) + f(b)最大 且 a + b = c,输出这个f(a) + f(b)(0a,bc)。
示例1

输入

复制
35
10000000000

输出

复制
17
91

说明

在第一个样例中,可以选择 a = 17,b = 18,这样得到的f(a) + f(b)值最大为 17。
在第二个样例中, 可以选择 a = 5000000001,b = 4999999999.这样得到的f(a) + f(b)值最大为 91。



思路: 让其中一个最大 求出结果就是最大的

#include<bits/stdc++.h>
 
using namespace std;
long long solve(long long n)
{
    long long sum=0;
    while(n){
        sum+=n%10;
        n/=10;
    }
    return sum;
}
int main()
{
    long long n;
    while(scanf("%lld",&n)==1){
        long long t=n;
        int len=0;
        while(t){
            len++;
            t/=10;
        }
        long long Sum=0;
        for(int i=0;i<len-1;i++){
            Sum=Sum*10+9;
        }
        long long Sum1=n-Sum;
        printf("%lld
",solve(Sum)+solve(Sum1));
    }
    return 0;
}

 






















以上是关于LLLYYY的数字思维(模拟题)的主要内容,如果未能解决你的问题,请参考以下文章

AcWing3449. 数字根 (数论思维模拟)

AcWing3449. 数字根 (数论思维模拟)

CodeForces 1005D Polycarp and Div 3(思维贪心dp)

POJ 3923 Ugly Windows(——考察思维缜密性的模拟题)

[模拟] aw3781. 乘车问题(模拟+细节处理+编程思维)

[构造] aw3762. 二进制矩阵(困难模拟+分类讨论+简化代码+思维)