目录
A-莲子的软件工程学
输入输出样例
输入 #1
-1 2
输出 #1
1
输入 #2
0 -4
输出 #2
0
输入 #3
-12345 -54321
输出 #3
-12345
代码解析如下
#include<stdio.h>
int main() {
long int a,b;
scanf("%ld%ld",&a,&b);
if(a<0){
a*=-1;
}
if(b<0){
a*=-1;
}
printf("%ld",a);
return 0;
}
B-莲子的机械动力学
输入输出样例
输入 #1
5 4
3 3 2 1 1
3 2 2 1
输出 #1
4 2 1 1 0
输入 #2
10 1
10 9 8 7 6 5 4 3 2 1
0
输出 #2
10 9 8 7 6 5 4 3 2 1
代码解析如下
#include<stdio.h>
int main() {
int n,m,k,min,max;
int i;
scanf("%d%d",&n,&m);
if(n>m) {
min=m;
max=n;
} else {
min=n;
max=m;
}
int an[n],am[m],anm[max+1];
for(i=n-1; i>=0; i--) {
scanf("%d",&an[i]);
}
for(i=m-1; i>=0; i--) {
scanf("%d",&am[i]);
}
//sum
for(i=0; i<max+1; i++) {
anm[i]=0;
}
for(i=0; i<min; i++) {
anm[i]=an[i]+am[i];
}
for(i=min; i<max; i++) {
if(n<m) {
anm[i]=am[i];
} else {
anm[i]=an[i];
}
}
//chuli
for(i=0; i<max; i++) {
k=anm[i]/(i+2);
anm[i]%=(i+2);
anm[i+1]+=k;
}
// printf("\n");
// for(i=0; i<n; i++) {
// printf("%d ",an[i]);
// }
// printf("\n");
// for(i=0; i<m; i++) {
// printf("%d ",am[i]);
// }
// printf("\n");
if(anm[max]!=0) {
printf("%d ",anm[max]);
}
for(i=max-1; i>=0; i--) {
printf("%d ",anm[i]);
}
return 0;
}
D-莲子的物理热力学
输入输出样例
输入 #1
3 2
5 1 4
输出 #1
0
输入 #2
8 0
1 2 3 4 5 6 7 8
输出 #2
7
输入 #3
8 3
1 5 5 5 6 6 9 10
输出 #3
4
代码解析如下
#include<stdio.h>
//KuaiPai
int qusort(long int s[],long int start,long int end) {
long int i,j;
i=start;
j = end;
s[0]=s[start];
while(i<j) {
while(i<j&&s[0]<s[j])
j--;
if(i<j) {
s[i]=s[j];
i++;
}
while(i<j&&s[i]<=s[0])
i++;
if(i<j) {
s[j]=s[i];
j--;
}
}
s[i]=s[0];
if (start<i)
qusort(s,start,j-1);
if (i<end)
qusort(s,j+1,end);
return 0;
}
long int max(long int a,long int b) {
return a>b?a:b;
}
long int min(long int a,long int b) {
return a<b?a:b;
}
int main() {
long int n,m;
long int i,j,ans;
scanf("%ld%ld",&n,&m);
long int an[n+1];
for(i=1; i<=n; i++) {
scanf("%ld",&an[i]);
}
qusort(an,1,n);
ans = 1e10;
j=1;
for (i = 1; i <= min(n, m + 1); i++) {
j = max(j, i);
while((i - 1) + (n - j) + min(i - 1, n - j) > m)
j++;
ans = min(ans, an[j] - an[i]);
}
// printf("\n");
// for(i=1; i<=n; i++) {
// printf("%d ",an[i]);
// }
printf("%ld",ans);
return 0;
}
E-梅莉的市场经济学
输入输出样例
输入 #1
9
1
10
100
1000
10000
100000
1000000
10000000
100000000
输出 #1
0
1
6
-9
-11
-128
406
1629
5154
代码解析如下
#include<stdio.h>
int main() {
long long q,k,i,l,r,mid,ans;
scanf("%lld",&q);
long long arr[q];
for(i=0; i<q; i++) {
scanf("%lld",&arr[i]);
}
for(i=0; i<q; i++) {
k=arr[i];
l=1,r=2e9;
while (l<=r) {
mid=(l+r)/2;
//2*n*n-n
if (mid*mid*2-mid>=k) {
r=mid-1;
ans=mid;
} else
l=mid+1;
}
ans--;
arr[i]-=2*ans*ans-ans+1;
if(arr[i]<=ans) {
printf("%lld\n",arr[i]);
} else if(arr[i]<=2*ans) {
printf("%lld\n",2*ans-arr[i]);
} else if(arr[i]<=3*ans) {
printf("%lld\n",2*ans-arr[i]);
} else if(arr[i]<=4*ans) {
printf("%lld\n",-4*ans+arr[i]);
}
}
//printf("\n");
// for(i=0; i<q; i++) {
// printf("%lld\n",arr[i]);
// }
return 0;
}
后面两题战略性放弃……