JZOJ 部分有关进制题目

好久不写了(真的不是懒马

1047:【入门】正整数N转换成一个二进制数

传送门icon-default.png?t=L892http://www.jzoj.cn/problem.php?id=1047

懒得放题目 

本题我们可以采用小学就学过的除二取余法

 将十进制数除以二,得到的商继续除以二,直至商为0或1时为止,然后在旁边标出各步的余数,最后倒过来数

#include <bits/stdc++.h>
using namespace std;
int n,n2,binray_len; // 定义n,n的替身,二进制的长度
int main()
{
	cin >> n; // 读入n
	n2 = n;
	while (n2){ // 用替身算出二进制数的长度
		n2 /= 2;
		binray_len++;
	}
	int binray[binray_len+1]; // 定义数组binray为二进制数
	for (int i = 1; i <= binray_len; i++){ // 小学就学过的转换方法 模2 判断 除2 
		binray[i] = n % 2;
		n /= 2;
	}
	
	for (int i = binray_len; i >= 1; i--){ // 因为最后需要倒着输出,所以需要重新来个循环输出
		cout << binray[i];
	}
	return 0; // 结束

}

 

1557: 【入门】二进制中1的个数

传送门icon-default.png?t=L892http://www.jzoj.cn/problem.php?id=1557这一题就是基于上一题要输出1的个数

所以我们可以偷懒 哦耶!!(

把上题的代码复制过来,添上ans变量,在for循环加一个if判断是否等于1,最后把输出数组给改成输出ans就完事了

代码

#include <bits/stdc++.h>
using namespace std;
int n,n2,binray_len,ans = 0; // n, n的替身, 二进制数的长度,答案 
int main()
{
	cin >> n; // 读入n 
	n2 = n; 
	while (n2){  // 循环大家看得懂吧,先算出数的长度 
		n2 /= 2;
		binray_len++;
	}
	int binray[binray_len+1]; // 定义数组binray 
	for (int i = 1; i <= binray_len; i++){ // 小学就学过的转换方法 模2 判断 除2 
		binray[i] = n % 2;
		if (binray[i] == 1) ans++;
		n /= 2;
	}
	cout << ans; // 输出  
	return 0; // 结束 
}

今天先写这两题,下次有时间写A类B类

主要是我A类B类代码写得稀巴烂

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值