首页 > 其他分享 >Codeforces Round #742 D

Codeforces Round #742 D

时间:2023-01-17 17:02:53浏览次数:62  
标签:10 742 int Codeforces 100 Round 进位 1000

D. Expression Evaluation Error

题链
观察样例 发现我们应该应该减少进位 并且必须要进位的话 我们也是选择小的位来进
这样我们的做法就完成了
肯定是将所有位都拆开
先拆成比如3213 1000 1000 1000 100 100 10 1 1 1
然后为了小位来进我们把10来拆 然后拆100 再拆1000
最后注意:我们可以先全部拆了 大于n了也不要急 直接从后往前先把大的位输出了再输出小的位 其实只要我们选择拆了 那么总和在拆第一个的时候就减小了 所有我们后面合起来进位还是不变的

void solve(){
    int s,n;cin>>s>>n;
    multiset<int>v;
    int S=s;
    for(int i=1;s;i*=10,s/=10){
        int r=s%10;
        while(r--)v.insert(i);
    }
    while(v.size()<n){
        auto it=v.upper_bound(1);
        int x=*it;
        v.erase(it);
        for(int i=1;i<=10;i++)v.insert(x/10);
    }
    int now=0;
    for(auto it=v.rbegin();--n;now+=*it,it++)
        cout<<*it<<' ';
    cout<<S-now<<endl;
}

标签:10,742,int,Codeforces,100,Round,进位,1000
From: https://www.cnblogs.com/ycllz/p/17058183.html

相关文章