欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 蓝桥备赛(第一周)

蓝桥备赛(第一周)

2025/3/16 6:45:55 来源:https://blog.csdn.net/2301_77869606/article/details/146282407  浏览:    关键词:蓝桥备赛(第一周)

填空题(位运算,循环,日期问题):

1.握手问题

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{int sum=0;for(int i=49; i>=7; i--){sum+=i;}cout<<sum<<endl;return 0;
}

2.门派制作

#include<bits/stdc++.h>
#define int long long 
using namespace std;
signed main()
{int sum=0;for(int i=1;i<=2020;i++){string temp=to_string(i);sum+=count(temp.begin(),temp.end(),'2');}cout<<sum<<endl;return 0;
}

3.小球反弹

//往外延伸t个相同矩形,当走到第t个长方形的左上角 就算是回到了左上角了
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{int t=1,x=343720,y=233333;while(1){if((15*t)%x==0 && (17*t)%y==0) break;t++;}printf("%.2f",2*sqrt(15*t*15*t+17*t*17*t));return 0;
}

4.艺术与篮球

#include<bits/stdc++.h>
#define int long long
using namespace std;
bool fun(int x)
{int m[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};int year=x/10000,month=x%10000/100,day=x%10000%100;if(year%4==0 && year%100!=0 || year%400==0) m[2]+=1;if(year<2000 || year>2024) return false;if(month==0 || month>12) return false;if(day==0 || day>m[month]) return false;return true;
}signed main()
{int sum=0;map<int,int>p;p[0] = 13;p[1] = 1;p[2] = 2;p[3] = 3;p[4] = 5;p[5] = 4;p[6] = 4;p[7] = 2;p[8] = 2;p[9] = 2;for(int i=20000101; i<=20240413; i++){if(fun(i)) //判断是否为合法日期{int temp=i,sign=0;while(temp>0){sign+=p[temp%10];temp/=10;}if(sign>50){sum++;}}}cout<<sum<<endl;return 0;
}

5.幸运数

#include<bits/stdc++.h>
#define int long long
using namespace std;
bool fun(int x,int d)
{if(d%2!=0) return false;int sum1=0,sum2=0,d1=d/2,d2=d1;while(d1--){sum1+=x%10;x/=10;}while(d2--){sum2+=x%10;x/=10;}return sum1==sum2;
}
signed main()
{int sum=0;for(int i=1; i<=100000000; i++){int d=((int)log10(i)+1);if(fun(i,d)){sum++;}}cout<<sum<<endl;return 0;
}

6.平方差

#include<iostream>
#include<set>
#include<algorithm> 
using namespace std;
set<int>nums;
int main()
{// for(int i=1;i<=2021;i++)// {//     for(int j=0;j<=2021;j++)//     {//         for(int k=0;k<=j;k++)//         {//             if(i==(j*j-k*k))//             {//                 nums.insert(i);        //             }//         }//     }// }// cout<<nums.size()<<endl;cout<<1516<<endl;return 0;
}

7.求和

#include <iostream>
using namespace std;
int main()
{string s;cin>>s;while(1){int sum=0;for(int i=0;i<s.size();i++){sum+=(s[i]-'0');}if(sum>=10) s=to_string(sum);else{cout<<sum;break;}}return 0;
}

8.九进制转十进制

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{int n=2022,n1=0,yushu=0,base=1;while(n>0){yushu=n%10;n1+=yushu*base; //九进制位倍数 base*=9; n/=10;} cout<<n1<<endl; return 0;
}

9.3个1

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{int sum=0;for(int i=1;;i++)  {int sign=0,temp=i;while(temp>0){sign+=temp%2;temp/=2;}if(sign==3){sum++;}if(sum==23){cout<<i<<endl;break;}}return 0;
}

10.美丽的2024

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{int n=2024,sum=0;while(n>0){sum+=n%2;n/=2;}cout<<sum<<endl;return 0;
}

11.特殊的数

#include<bits/stdc++.h>
#define int long long
using namespace std;
int fun(int n)
{int n1=0,yushu=0,base=1;while(n>0){yushu=n%10;n1+=yushu*base; //累加 base*=16; //倍数 n/=10;}return n1; 
}
signed main()
{for(int i=10;; i++){if(fun(i)%i==0){cout<<i<<endl;break;}}return 0;
}

12.跑步

#include<bits/stdc++.h>
#define int long long
using namespace std;
int month[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
signed main()
{int sum=0,w=6;for(int i=1; i<=12; i++){for(int day=1; day<=month[i]; day++){if(w==6 || w==0 || day==1 || day==11 || day==21 || day==31){sum++;}w=(w+1)%7;}}cout<<sum<<endl;return 0;
}

13.异或和之和

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod=998244353;
signed main()
{int n;cin>>n;vector<int>a(n);for(int i=0; i<n; i++){cin>>a[i];}int result=0;for(int i=20; i>=0; i--) //遍历位数 {int s=0,n0=1,n1=0; //s表示前缀和,n0表示偶数个数(保证奇数本身占1),n1奇数个数 for(int j=0; j<n; j++){int bit=(a[j]>>i)&1; //按位&,逐位判断0或1,计算贡献 s+=bit;  if(s%2) //奇数 {result+=(1<<i)*n0; //合法个数(2^n0)*合法区间 n1++;}else{result+=(1<<i)*n1;n0++;}}}cout<<result<<endl;return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词