蓝桥杯2016省赛刷题
网友年龄
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
cout<<7;
}
有奖猜谜
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
int n=777;
for(int i=1;i<=12;i++){
if(i%2==1)n*=2;
else n-=555;
}
n*=4;
n-=555;
cout<<n;
}
煤球数目
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
int a[110]={0},sum=0;
for(int i=1;i<=100;i++){
a[i]=a[i-1]+i;
sum+=a[i];
}
cout<<sum;
}
搭积木
#include <bits/stdc++.h>
using namespace std;
int a[10],vis[10],cnt;
void dfs(int x){
if(x==5)
if(a[1]>=a[3]||a[1]>=a[4]) return;
if(x==6)
if(a[2]>=a[4]||a[2]>=a[5]) return;
if(x==8)
if(a[3]>=a[6]||a[3]>=a[7]) return;
if(x==9)
if(a[4]>=a[7]||a[4]>=a[8]) return;
if(x==10){
if(a[5]>=a[8]||a[5]>=a[9]) return;
else if(a[5]<a[8]&&a[5]<a[9]) cnt++;
}
for(int i=1;i<=9;i++){
if(!vis[i]){
a[x]=i;
vis[i]=1;
dfs(x+1);
vis[i]=0;
}
}
}
int main(){
dfs(1);
cout<<cnt;
}
平方怪圈
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
cout<<145;
}
凑算式
#include <bits/stdc++.h>
using namespace std;
double a[9];
int vis[9],cnt;
void dfs(int x){
if (x == 9){
if (a[0]+a[1]/a[2]+(a[3]*100+a[4]*10+a[5])/(a[6]*100+a[7]*10+a[8])==10)cnt++;
return;
}
for (int i = 1 ; i <= 9; i++){
if (!vis[i]){
vis[i] = 1;
a[x] = i;
dfs(x + 1);
vis[i] = 0;
}
}
}
int main(){
dfs(0);
cout << cnt;
}
交换瓶子
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e4+9;
int n,a[N],cnt;
signed main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++){
while(a[i]!=i){
swap(a[i],a[a[i]]);
cnt++;
}
}
cout<<cnt;
}
四平方和
#include <bits/stdc++.h>
using namespace std;
int main(){
int a,b,c,d,N;cin>>N;
for(a=0;a*a<N;a++){
for(b=0;a*a+b*b<N;b++){
for(c=0;a*a+b*b+c*c<N;c++){
d=sqrt(N-a*a-b*b-c*c);
if(a*a+b*b+c*c+d*d==N){
printf("%d %d %d %d\n",a,b,c,d);
return 0;
}
}
}
}
return 0;
}
最大比例
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=110;
int n,a[N];
signed main(){
cin >> n;
for(int i=0;i<n;i++)cin>>a[i];
sort(a,a+n);
int x=0,y=1;
for(int i=0;i<n-1;i++){
if(x*a[i+1]<a[i]*y&&a[i]!=a[i+1]){
x=a[i];
y=a[i+1];
}
}
int c=__gcd(x,y);
cout << y/c << '/' << x/c;
}
冰雹数
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
int n;cin>>n;
int maxx=-9999;
for(int i=1;i<=n;i++){
int k=i;
while(k!=1){
if(k&1)k=k*3+1;
else k>>=1;
maxx=max(maxx,k);
}
}
cout<<maxx;
}