E
题单
目录
A:
B:
C:
E1:
A:
题意:
给出n,令[l,r]区间之和等于n,求 l与r。
思路:
[l,r]=[-n+1,n]
代码:
#include#define bbn 200005 #define maxint 2147483647 #define maxLLint 9223372036854775807 #define mod 1000000007 //1e9+7 const double eps=1e-7; typedef long long int LL; using namespace std; LL t,n; void work() { cin>>t; while(t--) { cin>>n; cout<<-(n-1)<<' '<
B:
题意:
给出n,k,求第k大的由n的不同幂数组成的数。
思路:
模拟2进制处理k。
2进制数的第pos位的1代表n^(pos-1)存在。
2进制数的第pos位的0代表n^(pos-1)不存在。
代码:
#include#define bbn 300005 #define maxint 2147483647 #define maxLLint 9223372036854775807 #define mod 1000000007 //1e9+7 const double eps=1e-7; typedef long long int LL; using namespace std; LL t,n,k; void work() { cin>>t; while(t--) { cin>>n>>k; LL sum=0; LL p=1; for(;;) { if(k<2) { sum+=(k%2)*p; k/=2; p*=n; sum%=mod; p%=mod; break; } else { sum+=(k%2)*p; k/=2; p*=n; sum%=mod; p%=mod; } } cout<
C:
题意:
给出字符串及字符c,字符串中每个不同的字符都得换成c,更换时必须满足下标不能整除xi
输出时让xi这样的数最少。
思路:
先整体判断答案是否为0;
然后判断[n,n/2)的字符串,这个区间的下标数没有整倍数(2倍及以上)在[1,n]上。
代码:
#include#define bbn 300005 #define maxint 2147483647 #define maxLLint 9223372036854775807 #define mod 1000000007 //1e9+7 const double eps=1e-7; typedef long long int LL; using namespace std; int t,n; char c; string s; void work() { cin>>t; while(t--) { cin>>n; cin>>c; cin>>s; bool judge=1; for(int i=0; i n/2; i--) { if(s[i-1]==c) { k=i; break; } } if(k==0) { cout<<2<<'n'; cout<
E1:
题意:
二叉树染色,总共6个颜色,一个颜色只能与4个颜色相邻。
思路:
用到了高中的组合数知识。
sum=6*f(2)*f(3)*f(4)*f(5)*......f(k)
代码:
#include#define bbn 300005 #define maxint 2147483647 #define maxLLint 9223372036854775807 #define mod 1000000007 //1e9+7 const double eps=1e-7; typedef long long int LL; using namespace std; LL k,sum,p; void work() { cin>>k; sum=6; p=16; for(int i=1; i<=k-1; i++) { sum*=p; p*=p; sum%=mod; p%=mod; //cout<



