UPC题解训练4A-F
题解
F
假设每一个点为ai,每个人的蛋糕为x
把每个点ai放在数轴上,不难发现,|ai-x|为x到ai的距离。任取两个值ai,aj,发现x只要是
ai到aj上的任意一个点即可。
答案就是若干对aj-ai求和。
int a[N];
int main() {
int n;
cin>>n;
for(int i = 0;i < n;i++)
cin>>a[i];
sort(a,a+n);
int sum = 0;
for(int i = 0,j = n-1;i < j;i++,j--){
sum += a[j]-a[i];
}
cout<<sum<<endl;
return 0;
}
E
纯粹的模拟就行了,记得四舍五入。
priority_queue<int> Q;
int main() {
int n,m;
cin>>m>>n;
int tall[15][15];
int sum[15] = {0},tmax[15] = {0};
for(int i = 1;i <= m;i++){
for(int j = 1;j <= n;j++){
cin>>tall[i][j];
sum[i]+=tall[i][j];
tmax[i] = max(tall[i][j],tmax[i]);
if(tall[i][j] > 165) Q.push(tall[i][j]);
}
}
for(int i = 1;i <= m;i++)
cout<<tmax[i]<<endl;
for(int i = 1;i <= m;i++) {
cout <<(int) (sum[i] * 1.0 / n +0.5)<< endl;
}
while(!Q.empty()){
cout<<Q.top()<<' ';
Q.pop();
}
return 0;
}
D
枚举就行了
bool is_prime(int x){
for(int i = 2;i < x;i++){
if(x%i == 0) return false;
}
return true;
}
bool is_sq(int x){
return x == (int)sqrt(x) * (int)sqrt(x);
}
int main() {
int a,b;
cin>>a>>b;
int cnt = 0;
bool flag = false;
for(int i = a; i <= b;i++){
if(is_prime(i/100) && is_sq(i%100) && i%6 == 0){
if(flag)cout<<' ';
flag = true;
cout<<i;
cnt++;
}
}
cout<<endl<<cnt<<endl;
return 0;
}
C
直接上代码把.
int main()
{
char str[30];
int i,count = 0;
gets(str);
if(strlen(str) >= 8&&strlen(str) <= 30)
{
for(i=0;i<strlen(str);i++)
{
if((str[i]>='0'&&str[i]<='9'))
{
count++;
continue;
}
else
cout<<str[i];
}
}
cout<<"\n"<<count;
}
B
把后面两个字母,交换到前面
int main() {
char a[N];
cin>>a;
int len = strlen(a);
int t = len;
cout<<a<<endl;
while(t>1){
t--;
for(int i = len-1;i >= 2;i--){
//cout<<a[i-3]<<a[i-2]<<a[i-1]<<a[i]<<endl;
swap(a[i-1],a[i-2]);
swap(a[i],a[i-1]);
}
cout<<a<<endl;
}
return 0;
}
A
int main()
{
double x,y;
cin>>x;
if(x >= 1 && x <= 15)
y = x*6;
else if(x > 15&&x <= 100)
y = 6*15+(x-15)*9;
cout<<round(y)<<endl;
}

浙公网安备 33010602011771号