A:打表找规律可得(k+1)*(1<<h),套用公式即可。
MY CODE:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int h,k;
    cin>>h>>k;
    int ans=k+1;
    for(int i=1;i<=h;i++)
    ans*=2;
    cout<<ans;
    return 0;
}

B:显而易见,其实就是要输出gcd(a,b),和N一点关系也没有。
MY CODE:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    long long a,b,n;
    cin>>a>>b>>n;
    cout<<__gcd(a,b);
    return 0; 
}

C:最开始以为是博弈论,但后来发现没有那么高深,我们可以先筛一下因子,之后不停的除上这个因子,只到除不尽为止,之后加上计数器最后判断一下是偶即可。
MY CODE:

#include <iostream>
using namespace std;
int main()
{
    int n;
    cin>>n;
    int num=0;
    for(int i=2;i<=n;i++)
    {
        while(n%i==0)
        {
            n/=i;
            num++;
        }
    }
    if(num%2==0) 
    cout<<"Johnson";
    else 
    cout<<"Nancy";
 }

D:最小生成树模板题还带出模板的?
代码真的懒得给了。
E:只要加入此段代码即可,没啥可说的,啊

 int sum=0;
    for(int i=1;i<=maxL;i++)
     if(cnt[i])
      sum++;
     return sum;

好水啊