蓝桥杯2019省赛刷题
by lqx
平方和
#include <bits/stdc++.h>
using namespace std;
#define int long long
int m,sum=0;
signed main(){
for(int i=1;i<=2019;i++){
int k=i;
while(k){
m=k%10;
if(m==2||m==0||m==1||m==9){
sum+=i*i;
break;
}
k/=10;
}
}
cout<<sum;
}
年号字串
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
cout<<"BYQ";
//excel拉表格
}
等差数列
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+9;
int n,a[N];
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
sort(a+1,a+1+n);
if(a[n]==a[1]){
cout<<n;
return 0;
}
int d=a[2]-a[1];
for(int i=2;i<=n;i++){
d=__gcd(d,a[i]-a[i-1]);
}
cout<<(a[n]-a[1])/d+1;
}
后缀表达式
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+9;
int n,m,a[N],sum;
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n+m+1;i++)cin>>a[i];
sort(a+1,a+1+1+m+n);
if(!m){
for(int i=1;i<=n+m+1;i++)sum+=a[i];
cout<<sum;
return 0;
}
else{
sum+=a[n+m+1]-a[1];
for(int i=2;i<n+m+1;i++)sum+=abs(a[i]);
cout<<sum;
}
}
旋转
#include <bits/stdc++.h>
using namespace std;
#define int long long
int n,m,a[1005][1005];
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++)//3
for(int j=1;j<=m;j++)//4
cin>>a[i][j];
for(int i=1;i<=m;i++){
for(int j=n;j>=1;j--){
cout<<a[j][i]<<' ';
}
cout<<'\n';
}
}
最大降雨量
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
/*
[][][] [a] [][][]
[][][] [b] [][][]
[][][] [c] [][][]
[][][] [max] [][][]
[][][] [d] [][][]
[][][] [e] [][][]
[][][] [f] [][][]
比max大的有def行后4个+max行后3个
*/
cout<<49-3*4-3;
}
质数
#include <bits/stdc++.h>
using namespace std;
#define int long long
int cnt=0;
bool isprime(int x){
for(int i=2;i*i<=x;i++)
if(x%i==0)return 0;
return 1;
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
for(int i=2;;i++){
if(isprime(i))cnt++;
if(cnt==2019){
cout<<i;
return 0;
}
}
}
不同子串
#include <bits/stdc++.h>
using namespace std;
#define int long long
set<string> st;
//map<string,int> mp;
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
string s="0100110001010001";
for(int i=0;i<=s.size();i++)
for(int j=0;j<=s.size();j++){
string t=s.substr(i,j);
if(t=="")continue;
st.insert(t);
//mp[t]++;
}
cout<<st.size();//mp.size();
}
数的分解
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int cnt=0;
for(int i=1;i<673;i++)
for(int j=i+1;j<2019-i-j;j++){
int k=2019-i-j;
string a=to_string(i);
string b=to_string(j);
string c=to_string(k);
if(a.find("2")==-1&&a.find("4")==-1&&b.find("2")==-1
&&b.find("4")==-1&&c.find("2")==-1&&c.find("4")==-1)
cnt++;
}
cout<<cnt;
}
数列求值
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 20190325;
int a[N];
signed main(){
a[1] = 1, a[2] = 1, a[3] = 1;
for(int i=4;i<N;i++){
a[i] = a[i - 1] + a[i - 2] + a[i - 3];
a[i]%=10000;
}
cout<<a[20190324];
//cout<<4659;
}
斐波那契黄金分割
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 2e6+9;//别超过e6
int f[N];
signed main(){
int n;cin>>n;
if(n>=20){
cout<<"0.61803399";//调试判断
return 0;//注意要cout字符串
}
f[1]=f[2]=1;
for(int i=3;i<=n+1;i++)
f[i]=f[i-1]+f[i-2];
double ans=1.0*f[n]/f[n+1];
printf("%.8lf",ans);
}