CF1567D. Expression Evaluation Error(思维 贪心)

简介: CF1567D. Expression Evaluation Error(思维 贪心)

linkkkkk

题意:

给出s , n要求将s拆成n个数,使得这些数的和是s并且按照11进制计算得到的和最大。


思路:

如果将10拆成了1 + 9,那么和就从( 10 ) 11 = 11变成了( 9 + 1 ) 11,损失了1.

所以尽量将同一位上的整数放在一起,比如123 = 100 + 20 + 3

如果不得不拆的话,就尽量在较低的高位中拆分,将100拆成10 + 90比将100拆成99 + 1损失小。前者是1 0 11 + 9 0 11 = 1 ∗ 11 + 9 ∗ 11 = 110,后者是9 9 11 + 1 11 = 1 ∗ 1 + 9 ∗ 1 + 9 ∗ 11 = 109

代码:

int main() {
    int _=read;
    while(_--){
        int s=read,n=read;
        vector<int>res;//记录答案
        int x=1e9;
        while(x>=1){//从高位往低位划分,尽量按照整数位划分,如果必须要拆分的话,拆分损失小的低位
            if(n==1){//只剩一个数,直接输出就好
                res.push_back(s);break;
            }
            if(s-x<n-1){//保证剩下的能够凑齐
                x/=10;
                continue;
            }
            res.push_back(x);
            s-=x;n--;
        }
        for(auto t:res) cout<<t<<" ";
        puts("");
    }
    return 0;
}
目录
相关文章
|
7月前
|
机器学习/深度学习 算法
CF1029A Many Equal Substrings(kmp!!!!最通俗易懂的文章模板)
CF1029A Many Equal Substrings(kmp!!!!最通俗易懂的文章模板)
32 0
|
人工智能 BI
CF761D Dasha and Very Difficult Problem(构造 思维)
CF761D Dasha and Very Difficult Problem(构造 思维)
54 0
|
人工智能 BI
CF1398C. Good Subarrays(思维 前缀和)
CF1398C. Good Subarrays(思维 前缀和)
74 0
CF1341C. Nastya and Strange Generator(思维 模拟 构造)
CF1341C. Nastya and Strange Generator(思维 模拟 构造)
60 0
UCF 2021 Practice F.Balanced Strings (思维 组合数学)
UCF 2021 Practice F.Balanced Strings (思维 组合数学)
80 0
|
人工智能 BI
CodeForces - 1485D Multiples and Power Differences (构造+lcm)
CodeForces - 1485D Multiples and Power Differences (构造+lcm)
56 0
PAT (Basic Level) Practice (中文) 1010 一元多项式求导 (25 分)
PAT (Basic Level) Practice (中文) 1010 一元多项式求导 (25 分)
72 0