結果

問題 No.319 happy b1rthday 2 me
ユーザー okaduki
提出日時 2016-01-05 01:01:39
言語 C++11(廃止可能性あり)
(gcc 13.3.0)
結果
AC  
実行時間 2 ms / 2,000 ms
コード長 1,902 bytes
コンパイル時間 1,282 ms
コンパイル使用メモリ 161,256 KB
実行使用メモリ 5,376 KB
最終ジャッジ日時 2024-09-19 11:20:18
合計ジャッジ時間 2,383 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 29
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#include <bits/stdc++.h>
using namespace std;
//typedef
//------------------------------------------
typedef vector<int> VI;
typedef vector<VI> VVI;
typedef vector<string> VS;
typedef pair<int, int> PII;
typedef long long LL;
//container util
//------------------------------------------
#define ALL(a) (a).begin(),(a).end()
#define RALL(a) (a).rbegin(), (a).rend()
#define PB push_back
#define MP make_pair
#define SZ(a) int((a).size())
#define EACH(i,c) for(typeof((c).begin()) i=(c).begin(); i!=(c).end(); ++i)
#define EXIST(s,e) ((s).find(e)!=(s).end())
#define SORT(c) sort((c).begin(),(c).end())
//repetition
//------------------------------------------
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define REP(i,n) FOR(i,0,n)
//constant
//--------------------------------------------
const double EPS = 1e-10;
const double PI = acos(-1.0);
LL dp[100][2];
LL g(LL x){
if(x < 12) return 0;
stringstream ss; ss << x;
string s; ss >> s;
LL res = 0;
LL p = 1;
for(int i=SZ(s)-2;i>=0;--i){
LL y = atoll(s.substr(i,2).c_str());
LL a = atoll(s.substr(0,i).c_str());
LL b = atoll(s.substr(i+2).c_str());
if(y < 12)
res += a * p;
else if(y == 12)
res += a * p + b + 1;
else
res += (a+1) * p;
p *= 10;
}
return res;
}
LL f(LL x){
LL res = g(x);
if(x >= 2) ++res;
LL p;
for(p=1;p*10<=x;p*=10)
res += p / 10;
if(p*3 <= x) res += p / 10;
else if(2*p+2 <= x){
if(x % 10 >= 2)
res += x % p / 10 + 1;
else
res += x % p / 10;
}
return res;
}
LL naive(LL x){
stringstream ss;
for(LL i=1;i<=x;++i)
ss << i;
string s; ss >> s;
LL res = 0;
REP(i,SZ(s)-1)
if(s[i] == '1' && s[i+1] == '2')
++res;
return res;
}
int main(){
cin.tie(0);
ios_base::sync_with_stdio(false);
LL A, B; cin >> A >> B;
LL ans = f(B) - f(A-1);
LL x = A; while(x >= 10) x /= 10;
if(x == 2 && A%10 == 2) --ans;
cout << ans << endl;
return 0;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0