CF1352A题解

ccbb0530

2020-05-16 17:27:26

题解

CF第一次出现Div.4 真的很简单哎

先说下A题,洛谷题目传送门 ,CF原题

这道题有两种做法,先说第一种(也是比赛中写的一种)

(1)可以将它使用字符串读入,若那一位不是“0”, 则圆数个数+1。接着再扫一遍,不是“0”的位数,全部输出他的十进制表示法。如:5009中5输出5000。

上代码


#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    int T;
    cin>>T;

    while (T--){
        string s;
        cin>>s;

        int t=0;
        for (int i=0;i<s.size();++i){
            if (s[i]=='0')
                continue;
            else
                t++;
        }
        cout<<t<<endl;

        for (int i=0;i<s.size();++i){
            if (s[i]=='0')
                continue;
            else{
                cout<<s[i];
                for (int j=i+1;j<s.size();++j)  
                    cout<<"0";
                cout<<" ";
            }
        }
        cout<<endl;
    }
}

但是这不是最简单的做法。

(2)直接模拟,运用%求出每一位

首先我们要推一下如何运用%求出当前这一位。


int n;
cin>>n;
while (n){
    cout<<n%10<<endl;
    n/=10;
}

这是最关键的求出当前这一位是什么,接着用vector储存(如果不是0,求存进去),最后输出

由于这个方法有大佬已经写过了,所以在这里就不写了。

总结一下:这道题运用数学中mod的算法或运用字符串来解。