D
有两个长度为 n−1 的序列,b=(b2,b3,…,bn), c=(c2,c3,...,cn)。 这里,每个 bi ,ci 都是一个非负整数。 现在,序列 a=(a1,a2,…,an)当且仅当 for所有的i ( 2≤i≤n), bi=ai−1 or ai, ci=ai−1+ai并且每个 ai 是一个非负整数。 现在,Toilet-Ares 要求您计算美丽序列的数量。
第一行包含一个整数 n (2≤n≤105)- 序列 a 的长度。
第二行包含 n−1个整数 b2,b3,...,bn (0≤bi<230)- 序列 b 的元素。
第三行包含 n−1个整数 c2,c3,...,cn (0≤ci<231)- 序列 c的元素。
#include<bits/stdc++.h> using namespace std; const int maxn = 1e6+10; int b[maxn], c[maxn], d[maxn]; int main(){ int n; cin>>n; for(int i=2; i<= n; i++)cin>>b[i]; for(int i=2; i<= n; i++)cin>>c[i],d[i]=c[i]-b[i]; int ans = 1; for(int i=0; i< 31; i++)
{ int x=1, y=1; for(int j=2; j<=n; j++)
{ int w1=(b[j]>>i)&1, w2=(d[j]>>i)&1; int tx=0, ty=0; if(w2==1 &&w1==1)tx=0,ty=y; if(w2==0 &&w1==1)ty=x,tx=y; if(w2==1 &&w1==0)ty=0,tx=0; if(w2==0 &&w1==0)tx=x,ty=0; x=tx, y=ty; } ans *= (x+y); } cout<<ans<<"\n"; return 0; }
#include <iostream> #include <cstdio> using namespace std; int T; int a; int main(){ cin>>T; while (T--) { cin>>a; cout<<"no"<<endl; } return 0;
}
俗话说“有志者事竟成”。 Toilet-Ares 总是试图弄清楚在整个公路旅行中最多可以访问多少个不同的区域。 而你,作为朋友,是来回答这个问题的。
#include<iostream> #include<cstring> #include<cmath> using namespace std; const double PI = acos(-1); int main() { int T;cin>>T; while(T--) { double a1,b1; scanf("%lf%lf",&a1,&b1); double a = min(a1,b1); double b = sqrt(a1*a1+b1*b1); int ans = 4; for(int i=0;i<=2;i++) { if(i*a<=PI) ans = max(ans,4+i*2+(int)((PI-i*a)/b)*3); if(i*b<=PI)ans = max(ans,4+i*3+(int)((PI-i*b)/a)*2); } printf("%d\n",ans); } return 0; }