結果

問題 No.1168 Digit Sum Sequence
ユーザー Mat_hMat_h
提出日時 2022-01-06 06:31:44
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
AC  
実行時間 2 ms / 2,000 ms
コード長 5,952 bytes
コンパイル時間 1,946 ms
コンパイル使用メモリ 178,540 KB
実行使用メモリ 5,248 KB
最終ジャッジ日時 2024-11-06 20:22:16
合計ジャッジ時間 3,193 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
5,248 KB
testcase_01 AC 2 ms
5,248 KB
testcase_02 AC 2 ms
5,248 KB
testcase_03 AC 2 ms
5,248 KB
testcase_04 AC 2 ms
5,248 KB
testcase_05 AC 2 ms
5,248 KB
testcase_06 AC 2 ms
5,248 KB
testcase_07 AC 2 ms
5,248 KB
testcase_08 AC 2 ms
5,248 KB
testcase_09 AC 2 ms
5,248 KB
testcase_10 AC 2 ms
5,248 KB
testcase_11 AC 2 ms
5,248 KB
testcase_12 AC 2 ms
5,248 KB
testcase_13 AC 2 ms
5,248 KB
testcase_14 AC 2 ms
5,248 KB
testcase_15 AC 2 ms
5,248 KB
testcase_16 AC 2 ms
5,248 KB
testcase_17 AC 2 ms
5,248 KB
testcase_18 AC 2 ms
5,248 KB
testcase_19 AC 2 ms
5,248 KB
testcase_20 AC 2 ms
5,248 KB
testcase_21 AC 2 ms
5,248 KB
testcase_22 AC 2 ms
5,248 KB
testcase_23 AC 2 ms
5,248 KB
testcase_24 AC 2 ms
5,248 KB
testcase_25 AC 2 ms
5,248 KB
testcase_26 AC 2 ms
5,248 KB
testcase_27 AC 2 ms
5,248 KB
testcase_28 AC 2 ms
5,248 KB
testcase_29 AC 2 ms
5,248 KB
testcase_30 AC 2 ms
5,248 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<bits/stdc++.h>

using namespace std;

const int MAX = 510000;
const int MOD = 1000000007;
const double PI = 3.14159265358979323846264338327950288;

long long fac[MAX], finv[MAX], inv[MAX]; 

#define _GLIBCXX_DEBUG
#define int long long
#define _yes {cout<<"yes"<<endl;}
#define _no {cout<<"no"<<endl;}
#define _Yes {cout<<"Yes"<<endl;}
#define _No {cout<<"No"<<endl;}
#define _YES {cout<<"YES"<<endl;}
#define _NO {cout<<"NO"<<endl;}
#define _ans {cout<<ans<<endl;}
#define _count {cout<<count<<endl;}
#define rep(i,n) for(int i=0;i<n;i++)
#define rep1(i,n) for(int i=1;i<n;i++)
#define rrep(i,n) for(int i=n-1; i>=0; i--)
#define maprep(itr,m) for(auto itr=m.begin();itr!=m.end();itr++)
#define ALL(obj) (obj).begin(), (obj).end()
#define rALL(obj) (obj).rbegin(), (obj).rend()
#define fore(x,a) for(auto &x:a)
#define forin(a) for(auto &x:a){cin>>x;}
#define forvin(a) for(auto &x:a){for(auto &g:x){cin>>g;}}
#define inin(n) int n;cin>>n;
#define stin(s) string s;cin>>s;
#define chin(c) char c;cin>>c;
#define dbin(d) double d;cin>>d;



using ll = long long;
using vb = vector<bool>;
using vc = vector<char>;
using vd = vector<double>;
using vi = vector<int>;
using vs = vector<string>;
using si = set<int>;
using ss=set<string>;
using sd = set<double>;
using qi = queue<int>;
using dqi = deque<int>;
using dqc = deque<char>;


using vvc = vector<vc>;
using vvd = vector<vd>;
using vvi = vector<vi>;
using vvs = vector<vs>;
using vvvi = vector<vector<vector<int>>>;

using pii = pair<int, int>;
using psi = pair<string, int>;
using pis = pair<int, string>;
using pic = pair<int, char>;
using pdd = pair<double, double>;
using pds = pair<double, string>;
using psd = pair<string, double>;
using pss = pair<string, string>;

using vpii = vector<pii>;
using vpic = vector<pic>;
using vpsi = vector<psi>;
using vpis = vector<pis>;
using vpdd = vector<pdd>;
using vpss = vector<pss>;
using vpds = vector<pds>;
using vpsd = vector<psd>;

using spii=set<pii>;

using tiii = tuple<int, int, int>;
using tsii = tuple<string, int, int>;
using tiis = tuple<int, int, string>;
using vtiii = vector<tiii>;

using mii = map<int, int>;
using mci = map<char, int>;
using msi = map<string, int>;


using Graph=vvi;

template<typename T> bool chmax(T &m, const T q) {if (m < q) {m = q; return true;} else return false; }
template<typename T> bool chmin(T &m, const T q) {if (m > q) {m = q; return true;} else return false; }    

int FACT(ll n){if(n==0){return 1;}else{ll base=1;for(ll i=1;i<=n;i++){base*=i;}return base;}}//n!
int FACTmod(ll n, int mod){if(n==0){return 1;}else{ll base=1;for(ll i=1;i<=n;i++){base=base*i%mod;}return base;}}//n!%mod

vi DIVISOR(int n){
    vi v;
    for (int i=1;i*i<=n;i++){
        if(n%i==0) {v.push_back(i); 
        if(i*i!=n)v.push_back(n/i);}
    }
sort(ALL(v)); return v;} // 整数nの約数の昇順配列を出力

int DIVISORK(int n){
    int ans=0;
    for (int i=1;i*i<=n;i++){
        if(n%i==0) {ans++; 
        if(i*i!=n)ans++;}
    }
    return ans;
}// 整数nの約数の個数を出力

bool IS_PRIME(long long N) {
    if (N == 1) return false;
    for (long long i = 2; i * i <= N; ++i) {
        if (N % i == 0) return false;
    }
    return true;
} //素数判定


void NCRinit(){fac[0]=fac[1]=1;finv[0]=finv[1]=1;inv[1]=1;for(int i=2; i<MAX; i++){fac[i]=fac[i-1]*i%MOD;inv[i]=MOD-inv[MOD%i]*(MOD/i)%MOD;finv[i]=finv[i-1]*inv[i]%MOD;}}//二項係数前処理
long long NCR(int n,int k){if(n<k)return 0;if(n<0 || k<0){return 0;}return fac[n]*(finv[k]*finv[n-k]%MOD)%MOD;}// 二項係数計算/mod

long long POW(ll x, ll n) {ll ret = 1;while (n>0){if(n&1)ret*=x;x*=x;n>>=1;}return ret;}//x^n
long long POWmod(int x,int n, int mod) {long long ret=1;while(n>0) {if(n&1)ret=ret*x%mod;x=x*x%mod;n>>=1;}return ret;}//x^n%mod

ll GCD(ll x, ll y) {while(y>0){ll r=x%y;x=y;y=r;}return x;}//gcd
ll LCM(ll x, ll y){return (x/GCD(x,y))*y;}//lcm

int mNCR(int n,int r){
    if(n<r){return  0;}
    else if(r==0){return 1;}
    else{int x=1,ans=1;
    for(int i=n;i>n-r;i--){
        ans=ans*i/x;
        x++;
    }
    return ans;
    }
}//n.r小さいときのnCr

vector<pair<long long, long long> > prime_factorize(long long N) {
    vector<pair<long long, long long> > res;
    for (long long a = 2; a * a <= N; ++a) {
        if (N % a != 0) continue;
        long long ex = 0;
        while (N % a == 0) {
            ++ex;
            N /= a;
        }
        res.push_back({a, ex});
    }
    if (N != 1) res.push_back({N, 1});
    return res;
} //素因数分解

int MINVEC(vi v){
    int min=2147483647;
    int ans=0;
    int n=v.size();
    rep(i,n){
        if(v[i]<=min){min=v[i];ans=i;}
    }
    return ans;
}  //viの最小項の番号を返す;//最大番号優先

int MAXVEC(vi v){
    int max=-2147483648;
    int ans=0;
    int n=v.size();
    rep(i,n){
        if(v[i]>=max){max=v[i];ans=i;}
    }
    return ans;
}  //viの最大項の番号を返す;//最大番号優先

// aよりもbが大きいならばaをbで更新する
// (更新されたならばtrueを返す)
template <typename T>bool chmax(T&a,const T&b){if(a<b){a=b;return true;}return false;}
// aよりもbが小さいならばaをbで更新する
// (更新されたならばtrueを返す)
template <typename T>bool chmin(T&a,const T& b){if(a>b){a=b;return true;}return false;}

int MASSVEC(vi v, int x, int y){
    int ans=0;
    for(int i=x;i<=y;i++){
        ans+=v[i];
    }
    return ans;
} //ベクトルのx番目からy番目までの総和

bool secondsort(pair<int, int> a, pair<int, int> b) {
    if(a.second != b.second){
        return a.second < b.second;
    }else{
        return a.first < b.first;
    }
}


//ABCDEFGHIJKLMNOPQRSTUVWXYZ
//abcdefghijklmnopqrstuvwxyz



void solve() {
    stin(s);
    int a=10;
    while(a>9){
        a=0;
        rep(i,(int)s.size()){
            a+=s[i]-'0';
        }
        s=to_string(a);
    }
    cout<<s<<endl;
}







signed main(void){
    solve();
}
0