2.小浩的ABC - 蓝桥云课 (lanqiao.cn)
#include<bits/stdc++.h>
using namespace std;
const int N=1e6;
int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int n;cin>>n;while(n--){long long x;cin>>x;if(x==1)cout<<-1<<'\n';else if(x-1<=N)cout<<x-1<<" 1"<<" 1"<<'\n';else cout<<N<<" "<<x/N<<" "<<x-x/N*N<<'\n';}//A最大 B最小 C也小return 0;
}
1.小新的质数序列挑战 - 蓝桥云课 (lanqiao.cn)
//本题需要一个重要结论:任何一个大于1的数要么本身是质数,要么是某个质数的倍数
//且任何一个大于1的数都可以由2和3的序列组成
//故只要A或B大于1,就一定能找到这样的质数序列
//而对于每一个确定的序列,其最大绝对差为一个序列最大值减去另一个序列最小值
//本题的题意是为A和B寻找这样的两个序列,其最大绝对差在所有可能的序列中是最小的
//若要使两个序列的最大绝对差最小,应该使两个序列尽可能的接近或相似,
//每个序列所使用的质数越小越好,因为数字越大质数越稀疏,最大绝对差越大
//自然可以想到,最理想的情况就是A和B均由若干个相同的数组成,该数字是A和B的最大公约数
//故只要最大公约数大于1,它就一定可以表示成某个质数或某个质数的倍数,A和B就可以分别化成只由一个质数组成的序列
//此时最大绝对值的最小值为0
//第二种情况就是最大公约数为1,即找不到一个普适的质数同时表示A和B
//这时只能退而求其次,任何大于1的数都可以由2和3的序列组成
//故此时A和B都可以拆分成由2和3表示的序列,最大绝对差的最小值为3-2=1
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);ll T,A,B;cin>>T;while(T--){cin>>A>>B;if(A==1||B==1)cout<<-1<<'\n';//有一个数是1,不存在这样的序列,输出-1 else if(__gcd(A,B)>1)cout<<0<<'\n';//A和B的最大公约数大于1,//有一个质数可以使得A,B都能整除 那么就让序列中全是这个质数 差为0//一定可以由最大公约数组成两个完全相同的序列,而该最大公约数必能写成若干个质数的和else cout<<1<<'\n';//若A和B没有除了1以外的最大公约数,使其最大绝对差最小的序列只能由2和3组成,故最小值为1 }//__gcd(A,B)==1说明找不到一个普适的质数使得A,B都能整除//即不存在某个质数使得A,B都能除尽,那就用2,3来算return 0;
}
蓝桥杯省赛无忧班(C&C++ 组)第 2 期 - 最小的或运算 - 蓝桥云课 (lanqiao.cn)
位运算-CSDN博客
// 0|1==1 1|1==1 0|0==0//1主导
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main(){int a,b;cin>>a>>b;cout<<(a^b);//同0异1return 0;
}
#include <bits/stdc++.h>
#define int long long
using namespace std;
// |1主导 有1则是1 全0则为0
void solve(){int a,b;cin>>a>>b;int res=0;for(int i=63;i>=0;--i){int temp1=(a>>i)&1;int temp2=(b>>i)&1;//取二进制的某一位 判断数字为多少if(temp1+temp2==1)res+=(1ll<<i);//1要变1ll因为超int}//必须不同的时候 这时候x必须是1才能使得都是1 如果相同的话是0或1 得到的都一样cout<<res;
}
signed main(){int t=1;while(t--)solve();return 0;
}
9.简单的异或难题 - 蓝桥云课 (lanqiao.cn)
#include <bits/stdc++.h>
using namespace std;
//无需关心数字出现的次数是奇数还是偶数,出现偶数次的项在连续异或的过程中会变成0,不影响最终结果
int main(){int b,c;cin>>b>>c;int a[b+1]={},s[b+1]={};for(int i=1;i<=b;i++){cin>>a[i];s[i]=s[i-1]^a[i];}while(c--){int l,r;cin>>l>>r;cout<< (s[r]^s[l-1]) <<'\n';}return 0;
}
2.出列 - 蓝桥云课 (lanqiao.cn)
#include <bits/stdc++.h>
using namespace std;
int main() {int n; cin >> n;int cnt = 0;while(n != 1) {n >>= 1;cnt += 1;}cnt = pow(2, cnt);cout << cnt << '\n';return 0;
}
1.笨笨的机器人 - 蓝桥云课 (lanqiao.cn)
#include <bits/stdc++.h>
#define int long long
#define io ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
const int maxn=1e3+5;
int a[maxn];
void solve(){int n;cin>>n;int sum=1<<n;for(int i=1;i<=n;i++){cin>>a[i];}int cnt=0;//011010000 for(int i=0;i<=(1ll<<n)-1;i++){ //枚举所有种可能int res=0;for(int j=0;j<n;j++){ if((i>>j)&1){ //i这个数字的第j位是不是1res+=a[j+1];}else{res-=a[j+1];}}if(res%7==0){cnt+=1;}}double ans=1.0*cnt/sum;cout<<fixed<<setprecision(4)<<ans<<"\n";
}
signed main() {io;int t=1;//cin>>t;while(t--){solve(); }
}