if(!
strcmp(str[b],temp)){
ttongji++;
i++;
str[b][0]='\0';
}
}
if(ttongji>otongji||(ttongji==otongji&&strlen(temp)>strlen(out))){
strcpy(out,temp);
otongji=ttongji;
}
}
}
i=0;
while(out[i]!
='\0'){
printf("%c",out[i]);
i++;
}
getchar();
return0;
}
算法训练矩阵乘法
时间限制:
1.0s 内存限制:
512.0MB
查看参考代码
锦囊1
锦囊2
锦囊3
问题描述
输入两个矩阵,分别是m*s,s*n大小。
输出两个矩阵相乘的结果。
输入格式
第一行,空格隔开的三个正整数m,s,n(均不超过200)。
接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j)。
接下来s行,每行n个空格隔开的整数,表示矩阵B(i,j)。
输出格式
m行,每行n个空格隔开的整数,输出相乘後的矩阵C(i,j)的值。
样例输入
232
10-1
11-3
03
12
31
样例输出
-32
-82
提示
矩阵C应该是m行n列,其中C(i,j)等于矩阵A第i行行向量与矩阵B第j列列向量的内积。
例如样例中C(1,1)=(1,0,-1)*(0,1,3)=1*0+0*1+(-1)*3=-3
#include
intmain(){
intm,s,n,i,j,k,a[200][200],b[200][200],c[200][200];
scanf("%d%d%d",&m,&s,&n);
for(i=1;i<=m;i++){
for(j=1;j<=s;j++)
scanf("%d",&a[i][j]);
}
for(i=1;i<=s;i++){
for(j=1;j<=n;j++)
scanf("%d",&b[i][j]);
}
for(i=1;i<=m;i++){
for(j=1;j<=n;j++)
c[i][j]=0;
}
for(i=1;i<=m;i++){
for(j=1;j<=n;j++){
for(k=1;k<=s;k++){
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
}
}
for(i=1;i<=m;i++){
for(j=1;j<=n;j++)
printf("%d",c[i][j]);
printf("\n");
}
return0;
}
算法训练大小写转换
时间限制:
1.0s 内存限制:
512.0MB
查看参考代码
锦囊1
锦囊2
锦囊3
问题描述
编写一个程序,输入一个字符串(长度不超过20),然后把这个字符串内的每一个字符进行大小写变换,即将大写字母变成小写,小写字母变成大写,然后把这个新的字符串输出。
输入格式:
输入一个字符串,而且这个字符串当中只包含英文字母,不包含其他类型的字符,也没有空格。
输出格式:
输出经过转换后的字符串。
输入输出样例
样例输入
AeDb
样例输出
aEdB
#include
intmain()
{
inti;
charch[100];
gets(ch);
i=0;
while(ch[i]!
='\0')
{
if(ch[i]<='z'&&ch[i]>='a')
ch[i]-=32;
elsech[i]+=32;
i++;
}
puts(ch);
return0;
}
算法训练动态数组使用
时间限制:
1.0s 内存限制:
512.0MB
查看参考代码
锦囊1
锦囊2
锦囊3
从键盘读入n个整数,使用动态数组存储所读入的整数,并计算它们的和与平均值分别输出。
要求尽可能使用函数实现程序代码。
平均值为小数的只保留其整数部分。
样例输入
5
34002
样例输出
91
样例输入
7
3275291
样例输出
294
#include
intmain()
{
inti,n,a[100],b[100],sum=0,avg=0;
scanf("%d",&n);
for(i=0;i{
scanf("%d",&b[i]);
a[i]=b[i];
sum=sum+a[i];
}
avg=sum/n;
printf("%d%d\n",sum,avg);
return0;
}
算法训练删除数组零元素
时间限制:
1.0s 内存限制:
512.0MB
查看参考代码
锦囊1
锦囊2
锦囊3
从键盘读入n个整数放入数组中,编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移动。
注意,CompactIntegers函数需要接受数组及其元素个数作为参数,函数返回值应为删除操作执行后数组的新元素个数。
输出删除后数组中元素的个数并依次输出数组元素。
样例输入:
(输入格式说明:
5为输入数据的个数,34002是以空格隔开的5个整数)
5
34002
样例输出:
(输出格式说明:
3为非零数据的个数,342是以空格隔开的3个非零整数)
3
342
样例输入
7
0070090
样例输出
2
79
样例输入
3
000
样例输出
0
算法训练最小乘积(基本型)
时间限制:
1.0s 内存限制:
512.0MB
查看参考代码
锦囊1
锦囊2
锦囊3
问题描述
给两组数,各n个。
请调整每组数的排列顺序,使得两组数据相同下标元素对应相乘,然后相加的和最小。
要求程序输出这个最小值。
例如两组数分别为:
13 -5和-241
那么对应乘积取和的最小值应为:
(-5)*4+3*(-2)+1*1=-25
输入格式
第一个行一个数T表示数据组数。
后面每组数据,先读入一个n,接下来两行每行n个数,每个数的绝对值小于等于1000。
n<=8,T<=1000
输出格式
一个数表示答案。
样例输入
2313-5-24151234510101
样例输出
-256
#include
voidsort1(int*a,intn)
{
inti,j;
inttmp;
for(i=0;ifor(j=0;jif(a[j]>a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
voidsort2(int*a,intn)
{
inti,j;
inttmp;
for(i=0;ifor(j=0;jif(a[j]{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
intmain(void)
{
intT;
intn,i;
inttotal;
inta[8],b[8],c[8];
scanf("%d",&T);
while(T)
{
total=0;
scanf("%d",&n);
for(i=0;iscanf("%d",&a[i]);
for(i=0;iscanf("%d",&b[i]);
sort1(a,n);
sort2(b,n);
for(i=0;ic[i]=a[i]*b[i];
for(i=0;itotal+=c[i];
printf("%d\n",total);
T--;
}
return0;
}
算法训练Torry的困惑(基本型)
时间限制:
1.0s 内存限制:
512.0MB
查看参考代码
锦囊1
锦囊2
锦囊3
问题描述
Torry从小喜爱数学。
一天,老师告诉他,像2、3、5、7……这样的数叫做质数。
Torry突然想到一个问题,前10、100、1000、10000……个质数的乘积是多少呢?
他把这个问题告诉老师。
老师愣住了,一时回答不出来。
于是Torry求助于会编程的你,请你算出前n个质数的乘积。
不过,考虑到你才接触编程不久,Torry只要你算出这个数模上50000的值。
输入格式
仅包含一个正整数n,其中n<=100000。
输出格式
输出一行,即前n个质数的乘积模50000的值。
样例输入
1
样例输出
2
#include
intpr[100010];
inttop;
intisPrime(intn)
{
inti;
for(i=0;i{
if(n%pr[i]==0)
{
return0;
}
}
return1;
}
intfindNextPrime(void)
{
intn=pr[top-1]+1;
while(!
isPrime(n))
{