結果
問題 | No.1407 Kindness |
ユーザー |
![]() |
提出日時 | 2020-11-29 20:06:07 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 76 ms / 2,000 ms |
コード長 | 1,739 bytes |
コンパイル時間 | 1,653 ms |
コンパイル使用メモリ | 126,536 KB |
最終ジャッジ日時 | 2025-01-16 10:15:17 |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 36 |
ソースコード
#include <iostream>#include <iomanip>#include <string>#include <vector>#include <algorithm>#include <utility>#include <functional>#include <set>#include <map>#include <queue>#include <deque>#include <bitset>#include <math.h>#include <random>#include <chrono>using namespace std ;using ll = long long ;using ld = long double ;template<class T> using V = vector<T> ;template<class T> using VV = V<V<T>> ;using pll = pair<ll,ll> ;#define all(v) v.begin(),v.end()ll mod = 1e9+7 ;long double pie = acos(-1) ;ll INF = 1000000000000 ;void yorn(bool a){if(a) cout << "Yes" << endl ; else cout << "No" << endl ;}//void YorN(bool a){if(a) cout << "YES" << endl ; else cout << "NO" << endl ;}ll gcd(long long a,long long b){if(b==0) return a ; return gcd(b,a%b) ;}ll lcm(long long a,long long b){return a/gcd(a,b)*b ;}void fix_cout(){cout << fixed << setprecision(20) ;}template<class T> void chmax(T &a,T &b){if(a<b) a = b ;}template<class T> void chmin(T &a,T &b){if(a>b) a = b ;}ll modpow(ll a,ll b){ll res = 1 ;while(b){if(b&1) res = res*a%mod ;a = a*a%mod ;b >>= 1 ;}return res ;}ll f(int n){string s = to_string(n) ;ll res = 1 ;for(int i=0;i<s.size();i++) res = res*(s[i]-'0')%mod ;return res ;}int main(){string n ; cin >> n ;int d = n.size() ;V<int> sum = {0,1,3,6,10,15,21,28,36,45} ;ll ans = sum[n[0]-'0'-1]*modpow(45,d-1)%mod ;ll mul = n[0]-'0' ;for(int i=1;i<d;i++){ans += modpow(45,d-i) ;ans += sum[max(0,n[i]-'0'-1)]*modpow(45,d-i-1)%mod*mul%mod ;ans %= mod ;mul = mul*(n[i]-'0')%mod ;}ans += mul ;cout << ans%mod << endl ;// ll sub = 0 ;// int nn = stoi(n) ;// for(int i=1;i<=nn;i++) sub = (sub+f(i))%mod ;// cout << sub << endl ;}