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;
}
目录
相关文章
|
5月前
CF 1538 G. Gift Set (贪心+思维)
【6月更文挑战第14天】
36 0
|
文件存储
Easy Number Challenge(埃式筛思想+优雅暴力)
Easy Number Challenge(埃式筛思想+优雅暴力)
83 0
|
C语言 C++
PAT (Basic Level) Practice (中文)1099 性感素数(20分)
“性感素数”是指形如 (p, p+6) 这样的一对素数。之所以叫这个名字,是因为拉丁语管“六”叫“sex”(即英语的“性感”)。(原文摘自 http://mathworld.wolfram.com/SexyPrimes.html) 现给定一个整数,请你判断其是否为一个性感素数。
144 0
|
人工智能 BI
CF1398C. Good Subarrays(思维 前缀和)
CF1398C. Good Subarrays(思维 前缀和)
105 0
|
人工智能 BI
CF761D Dasha and Very Difficult Problem(构造 思维)
CF761D Dasha and Very Difficult Problem(构造 思维)
79 0
CF1341C. Nastya and Strange Generator(思维 模拟 构造)
CF1341C. Nastya and Strange Generator(思维 模拟 构造)
84 0
PAT (Basic Level) Practice (中文) 1010 一元多项式求导 (25 分)
PAT (Basic Level) Practice (中文) 1010 一元多项式求导 (25 分)
99 0