【C語言 翁愷·第7周】
1多項式加法(5分)
題目內容:
一個多項式可以表達為x的各次冪與係數乘積的和,比如:
2x6+3x5+12x3+6x+20
現在,你的程式要讀入兩個多項式,然後輸出這兩個多項式的和,也就是把對應的冪上的係數相加然後輸出。
程式要處理的冪最大為100。
輸入格式:
總共要輸入兩個多項式,每個多項式的輸入格式如下:
每行輸入兩個數字,第一個表示冪次,第二個表示該冪次的係數,所有的係數都是整數。第一行一定是最高冪,最後一行一定是0次冪。
注意第一行和最後一行之間不一定按照冪次降低順序排列;如果某個冪次的係數為0,就不出現在輸入資料中了;0次冪的係數為0時還是會出現在輸入資料中。
輸出格式:
從最高冪開始依次降到0冪,如:
2x6+3x5+12x3-6x+20
注意其中的x是小寫字母x,而且所有的符號之間都沒有空格,如果某個冪的係數為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記憶體限制:32000kb
#include<stdio.h> #include<string.h> #include<math.h> int a[105]; int main() { memset(a,0,sizeof(a)); int x,y; int count0=0; while(scanf("%d %d",&x,&y)) { a[x]+=y; if(x==0) count0++; if(count0==2) break; } int flagcout=0; for(int i=100;i>=0;i--) { if(a[i]!=0) { if(flagcout) { if(a[i]>0) printf("+"); if(a[i]!=1) printf("%d",a[i]); if(i>=2) printf("x%d",i); else if(i==1) printf("x"); if(a[i]==1&&i==0) printf("%d",a[i]); } else { if(a[i]!=1) printf("%d",a[i]); if(i>=2) printf("x%d",i); else if(i==1) printf("x"); flagcout=1; } } } if(!flagcout) printf("0"); printf("\n"); }
2鞍點(5分)
題目內容:
給定一個n*n矩陣A。矩陣A的鞍點是一個位置(i,j),在該位置上的元素是第i行上的最大數,第j列上的最小數。一個矩陣A也可能沒有鞍點。
你的任務是找出A的鞍點。
輸入格式:
輸入的第1行是一個正整數n, (1<=n<=100),然後有n行,每一行有n個整數,同一行上兩個整數之間有一個或多個空格。
輸出格式:
對輸入的矩陣,如果找到鞍點,就輸出其下標。下標為兩個數字,第一個數字是行號,第二個數字是列號,均從0開始計數。
如果找不到,就輸出
NO
題目所給的資料保證了不會出現多個鞍點。
輸入樣例:
4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9
輸出樣例:
2 1
時間限制:500ms記憶體限制:32000kb
#include<stdio.h>
#include<string.h>
int a[105][105];
int max(int x,int y)
{
return x>y?x:y;
}
int min(int x,int y)
{
return x<y?x:y;
}
int main()
{
int n;
scanf("%d",&n);
memset(a,0,sizeof(a));
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
scanf("%d",&a[i][j]);
if(i==1)
a[0][j]=a[i][j];
else
a[0][j]=min(a[0][j],a[i][j]);
if(j==1)
a[i][0]=a[i][j];
else
a[i][0]=max(a[i][0],a[i][j]);
}
}
int hhh=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(a[i][j]==a[0][j]&&a[i][j]==a[i][0])
{
printf("%d %d\n",i-1,j-1,a[i][j]);
hhh=1;
break;
}
}
}
if(!hhh)
{
printf("NO\n");
}
return 0;
}