A.组队
用Excel
B.年号子串
10进制化为26进制
C.数列求值
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cmath>
#define hh ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
const int N=20190324+5;
typedef long long LL;
using namespace std;
LL a[N];
int main()
{
a[1]=1,a[2]=1,a[3]=1;
for(int i=4;i<=20190324;i++)
{
a[i]=(a[i-1]+a[i-2]+a[i-3])%10000;
}
cout<<a[20190324]%10000<<endl;
}
D.数的分解
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cmath>
#define hh ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
const int N=20190324+5;
typedef long long LL;
using namespace std;
LL a[N];
LL cnt=0;
bool check(int x)
{
while(x)
{
if(x%10==2||x%10==4)
return false;
else
x=x/10;
}
return true;
}
int main()
{
for(int i=1;i<2019;i++)
{
for(int j=i+1;j<2019;j++)
{
for(int k=j+1;k<2019;k++)
{
if(i+j+k==2019&&check(i)&&check(j)&&check(k)&&i!=j&&i!=k&&j!=k)
{
cnt++;
cout<<cnt<<endl;
}
}
}
}
}
F.特别数的和
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cmath>
#define hh ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
const int N=20190324+5;
typedef long long LL;
using namespace std;
int n=0,cnt=0;
bool check(int x)
{
while(x)
{
if(x%10==2||x%10==0||x%10==1||x%10==9)
{
return true;
}
else x=x/10;
}
return false;
}
int main()
{
hh;
cin>>n;
for(int i=1;i<=n;i++)
{
if(check(i))
{
cnt=cnt+i;
}
}
cout<<cnt<<endl;
}
G.完全二叉树的权值
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cmath>
#define hh ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
/*
int表示整数大小2^31-1,约等于1e9,题目数据1e5*1e5=1e10会爆int,要定义long long
long long 10^18
*/
const int N=1e5+5;
typedef long long LL;
using namespace std;
int n;
int a[N];
int main()
{
scanf("%d",&n);
for(int i=1; i<=n; i++) scanf("%d",&a[i]);
LL maxs=-1e18;
int mind=0;
//d为第几层,i为每一层第一个的下标
for(int d=1,i=1; i<=n; d++,i=i*2)
{
//ds为每一层有多少个数
int ds=pow(2,d-1);
LL sum=0;
//一定要加上j<=n,因为最后一层不一定满,否则只能拿90
for(int j=i; j<i+ds&&j<=n; j++)
{
sum=sum+a[j];
}
if(sum>maxs)
{
maxs=sum;
mind=d;
}
/*
cout<<"d="<<d<<endl;
cout<<"sum="<<sum<<endl;
cout<<endl;
*/
}
cout<<mind<<endl;
}
H.等差数列
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cmath>
#define hh ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
const int N=1e5+5;
typedef long long LL;
using namespace std;
int n,d;
int a[N];
int gcd(int a,int b)
{
return b?gcd(b,a%b):a;
}
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++) scanf("%d",&a[i]);
sort(a,a+n);
for(int i=1;i<n;i++) d=gcd(a[i]-a[0],d);
if(d==0) printf("%d",n);
else printf("%d",((a[n-1]-a[0])/d)+1);
}