#include
using namespace std;
int n, a[20], len;
int main()
{scanf("%d", &n);//这道题不讲武德, 题目说的是正整数, 测试样例却有0 if(n==0){printf("0");return 0;}while(n){len++;a[len]=n%2;n/=2;}for(int i=len; i>=1; --i){printf("%d", a[i]);}return 0;
}
1080: 【基础】挑战赛第三题——二进制中的1
#include
using namespace std;
int n, len;
int main()
{scanf("%d", &n);while(n){if(n%2){printf("%d\n", len);}n/=2;len++;}return 0;
}
1557: 【入门】二进制中1的个数
#include
using namespace std;
int n, ans;
int main()
{scanf("%d", &n);while(n){if(n%2){ans++;}n/=2;}printf("%d", ans);return 0;
}
1127: 【入门】A类多?B类多?
#include
using namespace std;
int n, temp, totala, totalb, cura, curb;
int main()
{scanf("%d", &n);for(int i=1; i<=n; ++i){temp=i;cura=curb=0;while(temp){if(temp%2){cura++;}else{curb++;}temp/=2;}if(cura>curb){totala++;}else{totalb++;}} printf("%d %d", totala, totalb);return 0;
}
1258: 【基础】任意进制转换
#include
using namespace std;
int n, b, len;
char a[20];
string r="0123456789ABCDEFGHIJ";
int main()
{scanf("%d %d", &n, &b);while(n){len++;a[len]=r[n%b];n/=b;}for(int i=len; i>=1; --i){printf("%c", a[i]);}return 0;
}
1288: 【基础】二进制转十进制
#include
using namespace std;
int n, len;
char a[33];
int main()
{scanf("%s", &a);len=strlen(a);for(int i=0; i
1128: 【基础】二进制小数
#include
using namespace std;
double n;
int m, ans;
int main()
{scanf("%lf %d", &n, &m);n=n-floor(n);while(m--){n*=2;ans=floor(n);n=n-ans;}printf("%d", ans);return 0;
}
#include
using namespace std;
int n, len, num, temp[11], curlen;
char a[300];
int main()
{scanf("%d %s", &n, &a);len=strlen(a);for(int i=0; i=1; --j) {printf("%d", temp[j]);}num=0;curlen=0;continue;}num=num*8+a[i]-'0'; }if(num==0){ //可能为0 printf("0");} while(num){curlen++;temp[curlen]=num%10;num/=10;}for(int j=curlen; j>=1; --j) {printf("%d", temp[j]);}return 0;
}
1559: 【入门】N!中1的位置
#include
using namespace std;
int n, ans=1, fac=1;
int main()
{scanf("%d", &n);for(int i=1; i<=n; ++i){fac*=i;while(fac%2==0){ans++;fac>>=1;}}printf("%d", ans);return 0;
}
1916: 【基础】-2进制
#include
using namespace std;
int n, cnt, a[100];
int main()
{scanf("%d", &n);if(n==0){printf("0");return 0;}while(n){cnt++;a[cnt]=abs(n%2);n=(n-a[cnt])/-2;}for(int i=cnt; i>=1; --i){printf("%d", a[i]);}return 0;
}
2492: 【提高】负进制
asd
1188: 【基础】高精度加法
#include
using namespace std;
char s1[510], s2[510];
int a[510], b[510], sum[510];
int lena, lenb, lens;
int main()
{cin >> s1 >> s2;lena=strlen(s1);lenb=strlen(s2);lens=max(lena, lenb);for(int i=1; i<=lena; ++i){a[i]=s1[lena-i]-'0';}for(int i=1; i<=lenb; ++i){b[i]=s2[lenb-i]-'0';}for(int i=1; i<=lens; ++i){sum[i]=sum[i]+a[i]+b[i];if(sum[i]>=10){sum[i+1]=sum[i+1]+sum[i]/10;sum[i]%=10;}} if(sum[lens+1]){lens++;}for(int i=lens; i>=1; --i){cout << sum[i];}return 0;
}
1812: 【基础】高精度减法
#include
using namespace std;
char a[10087], b[10087], tmp[10087];
int lena, lenb, len, num1[10087], num2[10087], ans[10087];
int main()
{cin >> a >> b;lena=strlen(a);lenb=strlen(b);len=max(lena, lenb);//如果ab, strcmp(a,b)>0 //a小于b的情况 if(lena1; --i){if(ans[i]==0) len--;elsebreak;}//输出答案 for(int i=len; i>=1; --i){cout << ans[i];}return 0;
}