Re: [閒聊] 每日leetcode

看板Marginalman作者 (6B)時間7月前 (2025/04/11 22:17), 編輯推噓2(203)
留言5則, 4人參與, 7月前最新討論串1390/1548 (看更多)
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
start先-1是因為 等於start的那個數也可以算 不用扣掉
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
文章代碼(AID): #1d-IIL0o (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1d-IIL0o (Marginalman)