首页 > 其他 > 详细

Codeforces Round #742 (Div. 2)--C

时间:2021-09-07 07:07:01      阅读:11      评论:0      收藏:0      [点我收藏+]

原题链接: Carrying Conundrum
技术分享图片

思路:因为题目定义的进位是往前两位进位,也就是奇数位进奇数位,偶数位进偶数位,
进而可以发现奇数位和偶数位互不影响。我们把目标数n的奇偶位分开组成新的数:比如
n=abcd ,n1=ac ,n2=bd。正常运算下凑一个数x的方式数是x+1,最后减去n1和n2是0的情况
最终答案就是:(n1+1)*(n2+1)-2 。

void solve(){
    ll n;
    cin>>n;
    ll a=0,b=0; int cnt=1; ll k=1;
    while(k<=n) k*=10,cnt++;k/=10;cnt--;
    while(cnt){
        if(cnt%2==1)
        a=a*10+n/k;
        else b=b*10+n/k;
        n=n%k; k/=10;
        cnt--;
    }
    cout<<(a+1)*(b+1)-2<<endl;
}
int main(){
    int t;
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}

Codeforces Round #742 (Div. 2)--C

原文:https://www.cnblogs.com/muscletear/p/15234743.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!