1 条题解
-
0
C :
#include<stdio.h> #include<string.h> #define max 1000 char ans[max]; void convert(char str[], int m, int n){ int i, j, k, a[max], b[max], flag; for(i=0; i<strlen(str); i++){ a[i] = str[i]-48; } k = 0; while(1){ for(i=0; i<strlen(str)-1; i++){ if(a[i]!=0){ a[i+1] += (a[i]%n)*m; a[i] /= n; } } b[k++] = a[i]%n; a[i] /= n; flag = 0; for(i = 0; i<strlen(str); i++){ if(a[i]!=0){ flag = 1; } } if(!flag){ break; } } for(j=0, i=k-1; i>=0; i--){ ans[j++] = b[i]+48; } ans[j] = '\0'; } int main(){ int i; char str[max]; while(scanf("%s",str)!=EOF){ convert(str,10,2); memset(str,0,sizeof(str)); for(i=0; i<strlen(ans); i++){ str[i] = ans[strlen(ans)-1-i]; } str[i] = '\0'; memset(ans,0,sizeof(ans)); convert(str,2,10); puts(ans); } return 0; }
C++ :
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; char result[5001]; void base_convert(char num[],int s,int e) { int i,flag,k,j,a[5001],b[5001]; for(i=0;i<strlen(num);i++) a[i]=num[i]-48; k=0; while(1) { for(i=0;i<strlen(num);i++) { if(a[i]!=0&&i<strlen(num)-1) { a[i+1]+=(a[i]%e)*s; a[i]/=e; } if(i==strlen(num)-1) { b[k++]=a[i]%e; a[i]/=e; } } flag=0; for(i=0;i<strlen(num);i++) if(a[i]!=0) flag=1; if(!flag) break; } for(j=0,i=k-1;i>=0;i--) result[j++]=b[i]+48; result[j]='\0'; } int main() { char s[1001]; while(scanf("%s",s)!=EOF) { base_convert(s,10,2); reverse(result,result+strlen(result)); base_convert(result,2,10); puts(result); } return 0; }
Java :
import java.util.*; import java.math.BigDecimal; public class Main { public static void main(String[] args){ Scanner cin=new Scanner(System.in); String s; while(cin.hasNext()){ s=cin.nextLine(); System.out.println(shi(er(s))); } } public static String shi(String str){ int len=str.length()-1; BigDecimal a=new BigDecimal(1),e=new BigDecimal(2),f=new BigDecimal(0); for(int i=len;i>=0;i--) { if(str.charAt(i)=='1') { f=f.add(a); } a=a.multiply(e); } return f+""; } public static String er(String str){ BigDecimal a=new BigDecimal(str),b=new BigDecimal(1),c=new BigDecimal(2),d=new BigDecimal(0); int i=0; String s=""; while(a.compareTo(d)!=0){ if((a.remainder(c)).compareTo(b)==0) s+=1+""; else s+=0+""; a=a.divide(c,0,BigDecimal.ROUND_HALF_DOWN); } return s; } }
- 1
信息
- ID
- 1135
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者