FFT優化進製轉換 十進位制轉二進位制

2021-07-25 09:23:31 字數 1790 閱讀 1676

其實進製轉換都能這麼做.. ∑n

i=0x

i∗ba

sei

∑n2−

1i=0

xi∗b

asei

+bas

en2∗

∑n2i

=0xi

+n2∗

base

i 然後∑

n2−1

i=0x

i∗ba

sei 和∑n

2i=0

xi+n

2∗ba

sei 遞迴下去做 中間b

asen

2∗∑n

2i=0

xi+n

2∗ba

sei 利用fft優化

時間複雜度t(

n)=2

∗t(n

2)+o

(nlo

g2n)

t(n)=o(

nlog

22n)

… 本來想毒一發別人的…貌似這東西爛大街了

不知道自己打跪了還是怎麼了.. 二進位制的轉換跑的比沒壓位的暴力只快了幾倍… 由於空間卡的緊 資料也不好開大 貌似很容易被壓位暴力跑過去….

真尷尬..

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define com complex

int rev[1000001];

void rader(int n)

const

double pi=acos(-1);

const

int mod=(int)1e9+7;

int mul(int a,int b)

int pow(int a,int x)

int add(int a,int b)

int ff;

void fft(com*a,int n,int fl)

int llen,rlen;

int c=0,b=1;

while(b<(r-l+1))

b*=2,c++;

b/=2,c--;

int fd=4

<1,l[4

<1],r[4

<1];

for(int i=0;i0;

solve(l,l+b-1,l,llen);

solve(l+b,r,r,rlen);

int t=c;

int ll=0,rr=0;

while((1

<1;

for(int i=0;i<(1

<1);fft(cur,c,1);

for(int i=0;i<(1

<1);

for(int i=0;i<(1

len=0;

for(int i=0;i<(1

res[i+1]+=res[i]>>1,res[i]&=1,len=i+1;

}int cnt[300001],x[300001];

char s[300001];

int main()

int n,n;

scanf("%d",&n);

int ans=0;

int ml=0;

while(n--)

return

0;

}

進製轉換(十進位制轉二進位制)

問題及 輸入乙個非負整數 十進位制 輸出此整數對應的二進位制數 正整數 十進位制 對應的二進位制數 6110 煙台大學計算機與控制工程學院 馮琬淇問題 輸入乙個非負整數 十進位制 輸出此整數對應的二進位制數 include include int main if i 0 i for j i j 0 ...

十進位制轉十六進製制(進製轉換)

問題描述 十六進製制數是在程式設計時經常要使用到的一種整數的表示方式。它有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f共16個符號,分別表示十進位制數的0至15。十六進製制的計數方法是滿16進1,所以十進位制數16在十六進製制中是10,而十進位制的17在十六進製制中是11,以此類推...

進製轉換 十進位制大數轉二進位制

題目描述 將乙個長度最多為30位數字的十進位製非負整數轉換為二進位制數輸出。輸入描述 多組資料,每行為乙個長度不超過30位的十進位製非負整數。注意是10進製數字的個數可能有30個,而非30bits的整數 輸出描述 每行輸出對應的二進位制數。示例1 輸入01 38輸出01 111000 採用除k取餘法...