1.多項式加法(5分)
題目內(nèi)容:
一個多項式可以表達為x的各次冪與系數(shù)乘積的和蚤蔓,比如:
2x6+3x5+12x3+6x+20
現(xiàn)在栽渴,你的程序要讀入兩個多項式,然后輸出這兩個多項式的和,也就是把對應(yīng)的冪上的系數(shù)相加然后輸出。
程序要處理的冪最大為100陆淀。
輸入格式:
總共要輸入兩個多項式,每個多項式的輸入格式如下:
每行輸入兩個數(shù)字斋竞,第一個表示冪次,第二個表示該冪次的系數(shù)秃殉,所有的系數(shù)都是整數(shù)坝初。第一行一定是最高冪,最后一行一定是0次冪钾军。
注意第一行和最后一行之間不一定按照冪次降低順序排列鳄袍;如果某個冪次的系數(shù)為0,就不出現(xiàn)在輸入數(shù)據(jù)中了吏恭;0次冪的系數(shù)為0時還是會出現(xiàn)在輸入數(shù)據(jù)中拗小。
輸出格式:
從最高冪開始依次降到0冪,如:
2x6+3x5+12x3-6x+20
注意其中的x是小寫字母x樱哼,而且所有的符號之間都沒有空格哀九,如果某個冪的系數(shù)為0則不需要有那項。
輸入樣例:
6 2
5 3
3 12
1 6
0 20
6 2
5 3
2 12
1 6
0 20
輸出樣例:
4x6+6x5+12x3+12x2+12x+40
時間限制:500ms內(nèi)存限制:32000kb
#include <stdio.h>
int a[110]={0};
int main(int argc, char **argv) {
//memset(a,0,sizeof(a));
int c,d;
do{
scanf("%d%d",&c,&d);
a[c]=d;
}while(c!=0);
int e,f;
do{
scanf("%d%d",&e,&f);
a[e]+=f;
}while(e!=0);
int count=0;
for(int i=109;i>1;--i){
if(a[i]!=0){
if(a[i]==1){
if(count==0){
printf("x%d",i);
count++;
}
else{
printf("+x%d",i);
count++;
}
}
else if(a[i]>0){
if(count==0){
printf("%dx%d",a[i],i);
count++;
}
else{
printf("+%dx%d",a[i],i);
count++;
}
}
else if(a[i]==-1){
printf("-x%d",i);
count++;
}
else{
printf("%dx%d",a[i],i);
count++;
}
}
}
if(a[1]!=0){
if(a[1]==1){
if(count==0){
printf("x");
count++;
}
else{
printf("+x");
count++;
}
}
else if(a[1]>0){
if(count==0){
printf("%dx",a[1]);
count++;
}
else{
printf("+%dx",a[1]);
count++;
}
}
else if(a[1]==-1){
printf("-x");
count++;
}
else{
printf("%dx",a[1]);
count++;
}
}
if(a[0]!=0){
if(count==0){
printf("%d",a[0]);
count++;
}
else{
printf("+%d",a[0]);
count++;
}
}
if(a[0]==0 && count==0){
printf("%d",0);
}
return 0;
}
2.鞍點(5分)
題目內(nèi)容:
給定一個n*n矩陣A搅幅。矩陣A的鞍點是一個位置(i阅束,j),在該位置上的元素是第i行上的最大數(shù)茄唐,第j列上的最小數(shù)息裸。一個矩陣A也可能沒有鞍點。
你的任務(wù)是找出A的鞍點沪编。
輸入格式:
輸入的第1行是一個正整數(shù)n, (1<=n<=100)呼盆,然后有n行,每一行有n個整數(shù)蚁廓,同一行上兩個整數(shù)之間有一個或多個空格访圃。
輸出格式:
對輸入的矩陣,如果找到鞍點相嵌,就輸出其下標挽荠。下標為兩個數(shù)字,第一個數(shù)字是行號平绩,第二個數(shù)字是列號圈匆,均從0開始計數(shù)。
如果找不到捏雌,就輸出
NO
題目所給的數(shù)據(jù)保證了不會出現(xiàn)多個鞍點跃赚。
輸入樣例:
4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9
輸出樣例:
2 1
時間限制:500ms內(nèi)存限制:32000kb
#include <stdio.h>
int main(int argc, char **argv) {
int n;
scanf("%d",&n);
int num;
int an;
int a[n][n];
int count;
int flag=0;
int i;
for(i=0;i<n;++i){
for(int j=0;j<n;++j){
scanf("%d",&num);
a[i][j]=num;
}
}
for(i=0;i<n;++i){
an=a[i][0];
count=0;
for(int j=1;j<n;j++){
if(a[i][j]>an){
an=a[i][j];
count=j;
}
}
for(int j=0;j<n;++j){
if(a[j][count]<an){
flag++;
}
}
if(flag==0){
printf("%d %d\n",i,count);
break;
}
flag=0;
}
if(i==n){
printf("NO");
}
return 0;
}