Acwing

数圈圈

十六进制是一种基数为 1616 的计数系统,是一种逢 1616 进 11 的进位制。

通常用数字 0、1、2、3、4、5、6、7、8、90、1、2、3、4、5、6、7、8、9 和字母 A、B、C、D、E、FA、B、C、D、E、F 表示,其中: A∼FA∼F 表示 10∼1510∼15,这些称作十六进制数字。

观察这些数字的图案,我们可以发现,有些数字上面包含圈圈,具体来说:

  • 数字 0,4,6,9,A,D0,4,6,9,A,D 中包含一个圈。
  • 数字 8,B8,B 中包含两个圈。
  • 数字 1,2,3,5,7,C,E,F1,2,3,5,7,C,E,F 中不含圈。

现在,给定一个十进制整数 nn,请你将其转化为十六进制表示,并数一数其十六进制表示中一共含有多少个圈圈。

输入格式

一个整数 nn。

输出格式

一个整数,表示整数 nn 的十六进制表示包含的圈圈总数。

数据范围

前三个测试点满足 0≤n≤1000≤n≤100,
所有测试点满足 0≤n≤2×1090≤n≤2×109。

输入样例1:

11

输出样例1:

2

输入样例2:

14

输出样例2:

0
#include<iostream>
using namespace std;

int main(){
	long long n;
	cin>>n;
	long long sum=0;
	if(n==0){
		sum=1;
	}
	for(;n!=0;){
		int x=n%16;
		n=n/16;
		if(x==0||x==4||x==6||x==9||x==10||x==13){
			sum++;
		}
		if(x==8||x==11){
			sum+=2;
		}
	}
	cout<<sum<<endl;
	return 0;
}

农田灌溉

 

 

#include<iostream>
#include<algorithm>
using namespace std;

int main(){
	int t;
	cin>>t;
	int sum=0;
	while(t--){
		int n,k;
		cin>>n>>k;
		int a[k+1];
		for(int i=1;i<=k;i++){
			cin>>a[i];
		}
		if(n==1){
			cout<<n<<endl;
			continue;
		}
		int aa=0;
		for(int i=2;i<=k;i++){
			int ww=a[i]-a[i-1];
			aa=max(ww,aa);
		}
		if((aa-1)%2){
			aa=(aa-1)/2+1;
		}
		else{
			aa=(aa-1)/2;
		}
		int bb=a[1]-1;
		int cc=n-a[k];
		sum=max(aa,bb);
		sum=max(sum,cc);
		cout<<sum+1<<endl;
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值