UVALive 6283 Great Deceiver 思考題
題意:給定一個n和k,求所有小於等於n的數中k進位制和-k進位制的值相等的有多少個組合使得
x_k==x_{-k}
x_k=a_0*k^0 + a_1*k^1 + ... + a_r*k^r
x_{-k}= a_0*(-k)^0 + a_1*(-k)^2 + ... + a_r*(-k)^r
顯然之後項數為奇或者冪為偶數的那些項相同才能使得k進位制和-k進位制都相同 也就是
對於
n = a_0*k^0 + a_1*k^1 + a_2*k^2 + ... + a_r*k^r
有多少個
x =b_0*k^0 + b_1*k^1 + b_2*k^2 + ... + b_r*k^r
並且
x \leq n
從最高位考慮,
1)若
r
為奇數,並且a_r>0
那麼就是k^{r/2}
,否則轉2) 2)若
r
為偶數,那麼 1.考慮
b_r
為[0,a_r-1]
的情況,一共有a_r*k^{a_r/2-1}
2.考慮
b_r
為a_r
的情況,就是這一位一定定下,求r-1
位種數,轉1)
程式碼:
#include <iostream>
#include <cstdio>
using namespace std;
typedef long long LL;
LL K,n,tk[100000],res[100000];
LL dfs(int bpos){
if(bpos%2==0){
if(res[bpos]) return tk[bpos/2];
else return dfs(bpos-1);
}
return res[bpos]*tk[bpos/2]+dfs(bpos-1);
}
int main(){
while(~scanf("%lld%lld",&n,&K)){
tk[0]=1;
for(int i=1;;i++){
tk[i]=tk[i-1]*K;
if(tk[i-1]*K>n)break;
}
LL tn=n;
res[0]=0;
while(tn>0){
res[++res[0]]=tn%K;
tn=tn/K;
}
//if(n==0)res[++res[0]]=0;
//printf("res0:%lld\n",res[0]);
//for(int i=res[0];i>=1;i--)printf("%lld ",res[i]);
//puts("");
printf("%lld\n",dfs(res[0]));
}
return 0;
}
相關文章
- UVALive 7511 Multiplication Table (數學模擬題)
- Great CSS LibraryCSS
- 思考題
- LOJ#6283. 數列分塊入門 7
- ZOJ 1013 Great Equipment(DP)UI
- The Great Gatsby讀書筆記(三)筆記
- The Great Gatsby讀書筆記(二)筆記
- 問題思考
- 2010成都站c題||uvalive5006 二進位制
- The Great Gatsby的讀書筆記(一)筆記
- ECfinal UVALive 7512 November 11th (公式)公式
- 思考一個問題
- UVALive 6665 Dragon’s Cruller (BFS + 優先佇列+hash)Go佇列
- Cognitive Flow: The Psychology of Great Game DesigGAM
- Swift API 設計思考題SwiftAPI
- 用英文思考問題
- UVALive 7410 && POJ 5583 Kingdom of Black and White (列舉)
- 最近思考的一個問題
- 測試團隊效率問題思考
- 提升解決問題能力的思考
- 一道面試題引起的思考面試題
- 未來網路若干問題思考
- 關於PWA落地問題的思考
- 重要的問題寫下來思考
- 有關記憶體的思考題記憶體
- 2008.1.21:It's great to see you two kiss and make up.
- SQL PERFORMANCE ANALYZER, a great tool for upgrade testing tuning and benchmark checkSQLORM
- Codeforces Round #407 (Div. 1) C. The Great Mixing(bfs)
- 一道題引發的EventLoop思考OOP
- 記一個面試題引發的思考面試題
- 一道排序題引發的思考排序
- 一道面試題引發的思考面試題
- 工作三個月問題與思考【前端】前端
- Android序列化問題與思考Android
- Android面試題《思考與解答》11月刊Android面試題
- 一道java面試題分析及思考Java面試題
- 一道文字處理題目的思考
- 對IMP-00013問題的思考