A.签到
#include<iostream>
#include<string.h>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<set>
#include<numeric>
#include<vector>
#include<queue>
#include<array>
#define _USE_MATH_DEFINES
using namespace std;
typedef long long ll;
const int mod=10^9+7;
//tuple<int,int,int>p[100000]
int main()
{
string a;
cin>>a;
if(a[0]=='5'&&a[1]=='5'&&a[2]=='5')
cout<<"YES";
else
cout<<"NO";
return 0;
}
G.签到
#include<iostream>
#include<string.h>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<set>
#include<numeric>
#include<vector>
#include<queue>
#include<array>
#define _USE_MATH_DEFINES
using namespace std;
typedef long long ll;
const int mod=10^9+7;
//tuple<int,int,int>p[100000]
ll ans;
void scs(ll a)
{
if(a==1)
return;
ans++;
if(a&1)
{
scs(a+1);
}
else
{
scs(a/2);
}
}
int main()
{
ll a;
cin>>a;
ans=0;
scs(a);
cout<<ans;
return 0;
}
位运算判断奇偶的时候应该是if(a&1)而不是if(a&1==1)
K.简单
https://blog.csdn.net/qq_43660826/article/details/105753188
H.中等
https://blog.csdn.net/qq_43660826/article/details/105753302
J.南理题解
题意&题解
递推+结论+矩阵快速幂
对于一个这样的图,设外圈点数为n,Unicycles的数量为n*S(n)
S(n)为不同的图的数目,乘n是旋转后的结果
对S(n+1),相当于在外圈多加了一个点,
对于圈的形成,可分为三种情况:
1只有中心点不在圈上
2.k个点在圈上,中心点也在圈上,k<=n
设M(i)为第二种情况下,有i个点不在圈上的图的数目
显然M(0)=1,M(1)=3
我们在圈的旁边添加一个新点
这个点有三种添加方式:,连接中心点,连接圈上的点(外圈),连接圈以外的点
每种方式分别是M(i)种图
其中第二三种方式有重复,即存在这个点同时与两边相连的情况,即为M(i-1)综上,M(i+1)=3*M(i)-M(i-1)。
S(n)=sum(1,M(0),…,M(n-2));
由于求和的需要,将其转化成斐波那契数列M(n)=fifib(2*n-1);
运用斐波那契数列奇数项求和公式得S(n)=fifib(2*n-1)
求得时候使用矩阵快速幂加速