zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    SOA the new OOP?
    请教一个程序装入执行的问题!
    程序员,如何选择合适的程序语言
    题解 P2387 【[NOI2014]魔法森林】
    题解 P4197 【Peaks】
    货车运输
    线段树合并
    jvm系列五java内存模型(2)
    jvm系列一什么是jvm
    jvm系列二内存结构
  • 原文地址:https://www.cnblogs.com/chenchen-12/p/10166059.html
Copyright © 2011-2022 走看看