目录
A [传智杯 #5 练习赛] 复读
输入输出样例
输入 #1
cc
b
a
cc
0
输出 #1
ccba
代码解析如下
#include<stdio.h>
#include<string.h>
int main() {
int i,j,flag;
char arr[500][100],str[50000];
for(i=0; i<500; i++) {
scanf("%s",&arr[i]);
if(strcmp(arr[i],"0")==0) {
break;
}
flag=0;
for(j=0; j<i; j++) {
if(strcmp(arr[i],arr[j])==0) {
flag=1;
break;
}
}
if(flag==0)
strcat(str,arr[i]);
}
printf("%s",str);
return 0;
}
B [传智杯 #5 练习赛] 时钟
输入输出样例
输入 #1
120
输出 #1
10
输入 #2
2880
输出 #2
79
输入 #3
987654321
输出 #3
26748975
代码解析如下
#include<stdio.h>
int ishao(int shi,int fen) {
int a,b,c,d,cha,flag=0;
a=shi/10;
b=shi%10;
c=fen/10;
d=fen%10;
cha=d-c;
if(shi>9) {
if(a+cha==b&&b+cha==c&&c+cha==d)
{
flag=1;
}
}else{
if(b+cha==c&&c+cha==d)
{
flag=1;
}
}
return flag;
}
int main() {
//39
long int n,day;
int i,count=0;
scanf("%ld",&n);
day=n/1440;
n%=1440;
if(n==0){
count++;
}
for(i=0; i<n; i++) {
if(ishao(i/60,i%60)==1){
count++;
}
}
printf("%d",count+day*39);
return 0;
}
C [传智杯 #5 练习赛] 平等的交易
输入输出样例
输入 #1
3
1 1 2
5
输出 #1
2
代码解析如下
#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;
}
int main() {
long int n,w,count=0,i,j,t;
scanf("%ld",&n);
long int arr[n+1];
for(i=1; i<=n; i++) {
scanf("%ld",&arr[i]);
}
scanf("%ld",&w);
qusort(arr,1,n);
for(i=n; i>0; i--) {
if(arr[i]<=w) {
w=arr[i];
break;
}
}
for(i=1; i<=n; i++) {
if(arr[i]<=w) {
w-=arr[i];
count++;
} else {
break;
}
}
// printf("%ld\n",n);
// for(i=1; i<=n; i++) {
// printf("%ld ",arr[i]);
// }
// printf("\n%ld",w);
printf("%d",count);
return 0;
}
D [传智杯 #5 练习赛] 清洁工
输入输出样例
输入 #1
5 4 1 1
NENW
输出 #1
10 10 10 10 10
10 10 10 10 10
10 6 10 10 10
4 4 10 10 10
6 10 10 10 10
输入 #2
7 14 1 1
NENENENENESSSS
输出 #2
105 105 105 105 105 105 105
105 105 105 105 55 61 105
105 105 105 49 51 69 105
105 105 51 49 105 79 105
105 61 55 105 105 91 105
79 69 105 105 105 105 105
91 105 105 105 105 105 105
输入 #3
10 70 2 2
NWSNSNNNSNNSSNNSENNNNEESNWSESESSWENNSEWESWWWESEEESENNSENWNESNWSNNNEESS
输出 #3
2485 2485 2485 2485 2485 2485 2485 2485 2485 2485
2485 1407 1205 1267 2485 2485 2485 2485 2485 2485
2485 1435 1281 1167 2485 2485 2485 2217 2281 2347
2485 1465 2485 1255 1041 2485 2485 2155 2485 2415
1557 1497 2485 2485 969 1177 2485 1733 1807 2485
1471 1531 1315 907 935 1267 2485 1473 1647 2485
1631 2485 2485 1357 1381 1407 1435 1499 1645 2485
2021 2347 2485 2485 2485 2485 1465 1497 2485 2485
2087 2415 2485 2485 2485 2485 2485 2485 2485 2485
2485 2485 2485 2485 2485 2485 2485 2485 2485 2485
输入 #4
5 4 2 1
NENW
输出 #4
10 10 10 10 10
10 10 10 10 10
10 10 6 10 10
10 4 4 10 10
10 6 10 10 10
代码解析如下
#include<stdio.h>
#include<string.h>
int main() {
int n,m,x,y,i,j,k;
scanf("%d%d%d%d",&n,&m,&x,&y);
int arr[n][n];
int arr1[n][n];
char str[m];
x=x-1;
y=n-y;
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
arr[i][j]=0;
arr1[i][j]=0;
}
}
scanf("%s",&str);
//NENW
for(k=0; k<m; k++) {
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
if(i==y&&j==x) {
arr1[i][j]=0;
} else {
arr1[i][j]++;
arr[i][j]+=arr1[i][j];
}
}
}
if((str[k]=='N')==1) {
y--;
}
if((str[k]=='S')==1) {
y++;
}
if((str[k]=='W')==1) {
x--;
}
if((str[k]=='E')==1) {
x++;
}
}
// for(i=0; i<m; i++) {
// printf("%c ",str[i]);
// }
// printf("\n");
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
printf("%d ",arr[i][j]);
}
printf("\n");
}
return 0;
}
后面两题战略性放弃……