题解 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