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;
} 
京公网安备 11010502036488号