結果
問題 | No.319 happy b1rthday 2 me |
ユーザー |
![]() |
提出日時 | 2015-12-12 01:49:08 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,691 bytes |
コンパイル時間 | 948 ms |
コンパイル使用メモリ | 97,900 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-15 08:34:01 |
合計ジャッジ時間 | 1,753 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 29 |
ソースコード
#define _CRT_SECURE_NO_WARNINGS#include<sstream>#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<climits>#include<cmath>#include<string>#include<vector>#include<set>#include<map>#include<queue>#include<numeric>#include<functional>#include<algorithm>#include<bitset>#include<tuple>#include<unordered_set>#include<random>using namespace std;#define INF (1<<29)#define rep(i,n) for(int i=0;i<(int)(n);i++)#define all(v) v.begin(),v.end()#define uniq(v) v.erase(unique(all(v)),v.end())#define indexOf(v,x) (find(all(v),x)-v.begin())pair<long long, long long> dp[20][2][2];long long f(string s) {if (s.size() < 2)return s[0]>='2';memset(dp,0,sizeof(dp));dp[0][0][0] = make_pair(1,0);rep(i,s.size())rep(j,2)rep(k,2) {pair<long long, long long> &a = dp[i][j][k];for (int d = 0; (d + '0' <= s[i] || j)&&d<10; d++) {pair<long long, long long> &b = dp[i+1][j||d+'0'<s[i]][d==1];b.first += a.first;b.second += a.second;if (k&&d == 2)b.second += a.first;}}long long res = 1;rep(j, 2)rep(k, 2)res += dp[s.size()][j][k].second;for (int i = 2; i < s.size(); i++) {long long p = 1;rep(j, i - 2)p *= 10;res += p;}if (s[0] == '2') {long long p = 0;for (int j = 1; j + 1 < s.size(); j++) {p *= 10;p += s[j] - '0';}res += p + 1;if (s[s.size() - 1] < '2')res--;}else if (s[0]>'2') {long long p = 1;rep(j, s.size() - 2)p *= 10;res += p;}return res;}int main() {string a,b;cin >> a>>b;int x = 0;rep(i, a.size() - 1)if (a[i] == '1'&&a[i + 1] == '2')x++;if (a == b) {cout << x << endl;}else {cout << f(b) - f(a) + x << endl;}return 0;}