A
一个等比数列求和的变形
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int mod = 1e9+7; ll a[110]; int main() { int t; cin >> t; a[0]=1; for(int i=1;i<=68;i++) { a[i]=a[i-1]*2; } while(t--) { int n; cin >> n; for(int i=2;i<=68;i++) { if(n%(a[i]-1)==0) { cout<< n/(a[i]-1)<<endl; break; } } } return 0; }
B
只要这个数可以整除4,就可以,对应的奇数都比对应偶数减一,最后一个奇数加回来就可以
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 typedef long long ll; 5 6 int main() 7 { 8 int t; 9 cin >> t; 10 while(t--) 11 { 12 ll n; 13 scanf("%lld",&n); 14 ll m = n/2; 15 if(m%2) 16 { 17 cout<<"NO"<<endl; 18 continue; 19 } 20 else{ 21 cout<<"YES"<<endl; 22 for(int i=2;i<=n;i+=2) 23 { 24 printf("%d",i); 25 if(i!=n)printf(" "); 26 } 27 for(int i=1;i<n-1;i+=2) 28 { 29 printf(" %d",i); 30 } 31 printf(" %d",n-1+m); 32 cout<<endl; 33 } 34 } 35 return 0; 36 }
C
直接遍历一遍就出答案了
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 typedef long long ll; 5 const int N = 2e5+10; 6 ll a[N]; 7 ll b[N]; 8 int main() 9 { 10 int t; 11 cin >> t; 12 while(t--) 13 { 14 int n; 15 scanf("%d",&n); 16 for(int i=1;i<=n;i++) 17 { 18 scanf("%lld",&a[i]); 19 b[i]=-1e18; 20 } 21 b[1] = a[1]; 22 int flag=1,cun=1; 23 for(int i=2;i<=n;i++) 24 { 25 if(b[cun]*a[i]>0) 26 { 27 b[cun] = max(b[cun],a[i]); 28 } 29 else{ 30 cun++; 31 b[cun] = a[i]; 32 } 33 } 34 ll sum =0; 35 for(int i=1;i<=cun;i++) 36 { 37 sum+=b[i]; 38 } 39 cout<< sum<<endl; 40 } 41 return 0; 42 }
D
待更新。。。。。。
Codeforces Round #636 (Div. 3) A-D
原文:https://www.cnblogs.com/wsxmmfby-jy/p/12762996.html