其實進製轉換都能這麼做.. ∑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取餘法...