Re: [閒聊] 每日leetcode
2999.
露西亞:幫寫HARD阿阿阿阿阿阿阿
好好好
其實我覺得這題
應該也沒到hard
就數數字
你版版主最會了
各種 case一直差1 被弄的很躁==
不過本質都差不多
先找final範圍裡的個數
再找start範圍裡的
兩個相減
// 1 <= start <= finish <= 1e15
// 1 <= limit <= 9
// 1 <= s.length <= floor(log10(finish)) + 1
// s only consists of numeric digits which are at most limit.
// s does not have leading zeros.
using ll = long long;
class Solution {
public:
ll numberOfPowerfulInt(ll start, ll finish, int limit, string s) {
ll val = stoll(s);
ll t = --start;
if(val > finish) return 0;
vector<int> fv, sv, num;
while(finish > 0) {
fv.emplace_back(finish % 10);
finish /= 10;
}
while(start > 0) {
sv.emplace_back(start % 10);
start /= 10;
}
for(int i = s.length()-1; i >= 0; i--){
char c = s[i];
num.emplace_back(c-'0');
}
while(num.size() < fv.size()) num.emplace_back(0);
while(sv.size() < fv.size()) sv.emplace_back(0);
ranges::reverse(fv);
ranges::reverse(sv);
ranges::reverse(num);
ll cnt = 0;
bool flag = true;
int n = fv.size(), len = n - s.length();
for(int i = 0; i < len; i++){
if(fv[i] <= limit){
cnt += fv[i] * pow((limit + 1), len - i - 1);
if(i == len-1) cnt++;
}
else{
flag = false;
cnt += pow((limit + 1), len - i);
break;
}
}
//cout << cnt << ' ';
if(cnt <= 0) cnt = 1;
if(flag and cnt > 1) {
for(int i = len; i < n; i++){
//cout << i << " " << fv[i] << " " << num[i] << '\n';
if(fv[i] > num[i]) break;
if(fv[i] < num[i]) {
cnt--; break;
}
}
}
//cout << cnt << ' ';
if(val > t) return cnt;
ll sub = 0;
flag = true;
for(int i = 0; i < len; i++){
if(sv[i] <= limit){
sub += sv[i] * pow((limit + 1), len - i - 1);
if(i == len-1) sub++;
}
else{
flag = false;
sub += pow((limit + 1), len - i);
break;
}
}
//cout << sub << ' ';
if(sub <= 0) sub = 1;
if(flag and sub > 1) {
for(int i = len; i < n; i++){
if(sv[i] > num[i]) break;
if(sv[i] < num[i]) {
sub--; break;
}
}
}
//cout << sub << ' ';
return cnt - sub;
}
};
--
很姆的咪
姆之咪
http://i.imgur.com/5sw7QOj.jpg

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.64.51.75 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1744381077.A.032.html
推
04/11 22:18,
7月前
, 1F
04/11 22:18, 1F
→
04/11 22:19,
7月前
, 2F
04/11 22:19, 2F
→
04/11 22:19,
7月前
, 3F
04/11 22:19, 3F
→
04/11 22:33,
7月前
, 4F
04/11 22:33, 4F
推
04/11 22:35,
7月前
, 5F
04/11 22:35, 5F
討論串 (同標題文章)
完整討論串 (本文為第 1390 之 1548 篇):