2019銀川現場:
62進製以內的任意進製轉換
板子:
#includeusing namespace std;
const int n=1000;
char s1[n],s2[n];
int a[n],t[n],n,m;//n進製轉m
void solve()
a[k++]=t[0]%m;
t[0]/=m; //單獨處理最後一位
while(len&&!t[len-1]) --len;//第len位一定是處理完的了(第一次白做),找第len位後不為0的位
}s2[k]=0;
for(i=0;ipoj1220:
板子(注釋是我曾經默寫錯的一些地方)
#include#include#includeusing namespace std;
const int n=1e5+5;
int n,m;
int a[n],t[n];
char s1[n],s2[n];
void solve()
a[k++]=t[0]%m;
t[0]/=m;
while(len&&!t[len-1]) --len;
}s2[k]=0;
for(int i=0;i藍橋杯:
16轉8:(用上面的板子會t,複雜度是o(n^2),n是十六進製制數的位數,是1e5,所以只能轉二進位制來做,複雜度是o(n))
但是用char寫會超時,好像是strcat函式特別慢。
#includeusing namespace std;
const int n=5e5+5;
char s1[n],s2[n],s[n],a[n];//s1十六進製制 s2二進位制 s補0後的二進位制 a八進位制
//strlen(s) 求字串s的長度
//strcat(s1,s2) 拼接 s1=s1+s2
//strcpy(s,str) 賦值(拷貝)
//strcmp(s1,s2) 比較(相等為0)
//strncpy(dest,src,n) 從src開始 取n個字元 賦給dest
//substr(s,n) string的函式 擷取(從s開始取n個字元)
void solve()
}int l2=s2.size();
if(l2%3==1) s2="00"+s2; else if(l2%3==2) s2="0"+s2;
bool flag=false;
for(int i=0;s2[i];i+=3)
a[k++]=t[0]%m;
t[0]/=m;
while(len&&!t[len-1]) --len;
}s2[k]=0;
for(int i=0;i10轉16(套板子):
#includeusing namespace std;
const int n=10;
int n=10,m=16;
int a[n],t[n];
char s1[n],s2[n];
void solve()
a[k++]=t[0]%m;
t[0]/=m;
while(len&&!t[len-1]) --len;
}s2[k]=0;
for(int i=0;i10轉8(8進製數前加0(除了0以外)):
#includeusing namespace std;
int main()
ps:我不知道有沒有%llo這種寫法啊,但是能過編譯反正hh......
參考:c語言實現進製轉換
c語言進製之間轉換
10轉2(輸出8位二進位制數) :
#includeusing namespace std;
int main()
poj1220 高精度任意進製轉換
高精度任意進製轉換 是從discuss裡找到的,據說是maigo神牛寫的。超精簡!我自己第一寫的時候,還把n進製先轉成10進製,然後再從10進製轉為m進製。悲催的是寫了好長滴,還沒調對啊!code include include const int maxn 1000 int t maxn a ma...
進製轉換 高精度除法 進製轉換
高精度除法運算 include include include using namespace std struct bign bign change char str return a bign divide bign a,int b,int r 去除前導0 while c.len 1 1 c.d...
高精度進製轉換模板
高精度進製轉換模板 高精度進製轉換 把oldbase 進製的數轉化為newbase 進製的數輸出。呼叫方法,輸入str,oldbase newbase.change solve output 也可以修改output 使符合要求,或者存入另外乙個字元陣列,備用 include include defi...