B - All the Vowels Please(构造,循环)
给你一个数字 k ,要求存在 n * m = k,(行和列)
要求每行每列都有aeiou,输出最后长为k的字符串
重点在找到5*5的循环节,然后循环构造
int main() { int n;cin>>n; if(n<25) {cout<<"-1"<<endl;return 0;} int flag=0,i; for(i=5;i<=sqrt(n);++i) if(n%i==0) {flag=1;break;} int j=n/i; if(flag==0||j<5) {cout<<"-1"<<endl;return 0;} string ans[5]={"aeiou","eioua","iouae","ouaei","uaeio"}; for(int x=0;x<i;++x) { int now=x%5; int bei=j/5; while(bei--) cout<<ans[now]; int yu=j%5; rep(ii,yu) cout<<ans[now][ii]; } //cout<<ans; //stop; return 0; }
C. A Tale of Two Lands
就可以只考虑x,y均大于零就。。。行
ll x[N]; int main() { int n;cin >> n; for (int i = 0; i < n; i++) { cin >> x[i]; if (x[i] < 0) x[i] *= -1; } sort(x, x + n); ll ans=0; rep(i,n) { int pos=upper_bound(x,x+n,2*x[i])-x; ans+=(pos-i-1); } cout << ans; //stop; return 0; }