题解 CF784B 【Kids' Riddle】

初中蒟蒻深夜发题解QwQ

这道题是纯模拟题,直接用一个数组a存下n的16进制下的数(不用转字符! 不用转字符!! 不用转字符!!!)

转好了以后可以设一个特判函数,用来判断有几个圈圈(或者是设一个数组)

注:两种方法我都试过,都AC了

函数版:

#include<bits/stdc++.h>
using namespace std;
int a[1001];
int f(int x)//特判函数
{
	if(x==0||x==4||x==6||x==9||x==10||x==13) return 1;
	if(x==8||x==11) return 2;
	return 0;
}
int main()
{
	int n,ans=0,w=0;
	cin>>n;
	if(n==0)//我就哇在这里
	{
		cout<<1;
		return 0;
	}
	while(n>0)//转十六进制
	{
		a[w]=n%16;
		n/=16;
		w++;
	}
	for(int i=0;i<w;i++) ans+=f(a[i]);//计算
	cout<<ans;
	return 0;
}

数组版:

#include<bits/stdc++.h>
using namespace std;
int a[1001];
int k[16]={1,0,0,0,1,0,1,0,2,1,1,2,0,1,0,0};//zhe这就是数组
int main()
{
	int n,ans=0,w=0;
	cin>>n;
	if(n==0)
	{
		cout<<1;
		return 0;
	}
	while(n>0)//转十六进制
	{
		a[w]=n%16;
		n/=16;
		w++;
	}
	for(int i=0;i<w;i++) ans+=k[a[i]];//QwQ只不过计算方式换了换
	cout<<ans;
	return 0;
}

管理大大看在《未成年保护法》的份上让窝过吧QwQ

原文地址:https://www.cnblogs.com/oierscw/p/12548476.html