jsp做網(wǎng)站遇到的問題獨立站seo
目錄
7-1 乘法口訣數(shù)列 (20分)
輸入格式:
輸出格式:
輸入樣例:
輸出樣例:
樣例解釋:
代碼
7-2 矩陣列平移(20分)
輸入格式:
輸出格式:
輸入樣例:
輸出樣例:
代碼
7-3 組合數(shù)的和(15分)
輸入格式:
輸出格式:
輸入樣例:
輸出樣例:
代碼
7-4 求集合數(shù)據(jù)的均方差(15分)
輸入格式:
輸出格式:
輸入樣例 1:
輸出樣例 1:
輸入樣例 2:
輸出樣例 2:
代碼
7-5 矩陣A乘以B(15分)
輸入格式:
輸出格式:
輸入樣例1:
輸出樣例1:
輸入樣例2:
輸出樣例2:
代碼
7-6 點贊(20分)
輸入格式:
輸出格式:
輸入樣例:
輸出樣例:
代碼
7-7?數(shù)組循環(huán)左移(20分)
輸入格式:
輸出格式:
輸入樣例:
輸出樣例:
代碼
7-8 數(shù)列求和-加強版(20分)
輸入格式:
輸出格式:
輸入樣例:
輸出樣例:
代碼
7-1 乘法口訣數(shù)列 (20分)
本題要求你從任意給定的兩個 1 位數(shù)字?a1??和?a2??開始,用乘法口訣生成一個數(shù)列 {an?},規(guī)則為從?a1??開始順次進行,每次將當前數(shù)字與后面一個數(shù)字相乘,將結(jié)果貼在數(shù)列末尾。如果結(jié)果不是 1 位數(shù),則其每一位都應(yīng)成為數(shù)列的一項。
輸入格式:
輸入在一行中給出 3 個整數(shù),依次為?a1?、a2??和?n,滿足?0≤a1?,a2?≤9,0<n≤103。
輸出格式:
在一行中輸出數(shù)列的前?n?項。數(shù)字間以 1 個空格分隔,行首尾不得有多余空格。
輸入樣例:
2 3 10
輸出樣例:
2 3 6 1 8 6 8 4 8 4
樣例解釋:
數(shù)列前 2 項為 2 和 3。從 2 開始,因為?2×3=6,所以第 3 項是 6。因為?3×6=18,所以第 4、5 項分別是 1、8。依次類推…… 最后因為第 6 項有?6×8=48,對應(yīng)第 10、11 項應(yīng)該是 4、8。而因為只要求輸出前 10 項,所以在輸出 4 后結(jié)束。
編譯器:GCC
代碼
#include<stdio.h>
int main()
{int a1 = 0;int a2 = 0;int n = 0;scanf("%d %d %d", &a1, &a2, &n);int arr[1000] = { 0 };arr[0] = a1;arr[1] = a2;int i = 0;int mul = 0;int count = 2;for (i = 0; i < n; i++){mul = arr[i] * arr[i + 1];if (mul > 9){arr[count++] = mul / 10;arr[count++] = mul % 10;}else{arr[count++] = mul;}if (count == n){break;}}printf("%d", a1);for (i = 1; i < n; i++){printf(" %d", arr[i]);}return 0;
}
7-2 矩陣列平移(20分)
給定一個?n×n?的整數(shù)矩陣。對任一給定的正整數(shù)?k<n,我們將矩陣的偶數(shù)列的元素整體向下依次平移 1、……、k、1、……、k、…… 個位置,平移空出的位置用整數(shù)?x?補。你需要計算出結(jié)果矩陣的每一行元素的和。
輸入格式:
輸入第一行給出 3 個正整數(shù):n(<100)、k(<n)、x(<100),分別如題面所述。
接下來?n?行,每行給出?n?個不超過 100 的正整數(shù),為矩陣元素的值。數(shù)字間以空格分隔。
輸出格式:
在一行中輸出平移后第 1 到?n?行元素的和。數(shù)字間以 1 個空格分隔,行首尾不得有多余空格。
輸入樣例:
7 2 99
11 87 23 67 20 75 89
37 94 27 91 63 50 11
44 38 50 26 40 26 24
73 85 63 28 62 18 68
15 83 27 97 88 25 43
23 78 98 20 30 81 99
77 36 48 59 25 34 22
輸出樣例:
440 399 369 421 302 386 428
樣例解讀
需要平移的是第 2、4、6 列。給定?k=2,應(yīng)該將這三列順次整體向下平移 1、2、1 位(如果有更多列,就應(yīng)該按照 1、2、1、2 …… 這個規(guī)律順次向下平移),頂端的空位用 99 來填充。平移后的矩陣變成:
11 99 23 99 20 99 89
37 87 27 99 63 75 11
44 94 50 67 40 50 24
73 38 63 91 62 26 68
15 85 27 26 88 18 43
23 83 98 28 30 25 99
77 78 48 97 25 81 22
編譯器:GCC
代碼
#include<stdio.h>int main()
{int n,k,x;scanf("%d %d %d",&n,&k,&x);int a[n][n];int f=1;for(int i=0;i<n;i++)for(int j=0;j<n;j++){scanf("%d",&a[i][j]);}for(int j=1;j<n;j+=2){for(int i=n-1;i>=f;i--){a[i][j] = a[i-f][j];}for(int i=0;i<f;i++){a[i][j] = x;}f = f%k+1;}for(int i=0;i<n;i++){int sum = 0;for(int j=0;j<n;j++){sum += a[i][j];}if(i==0) printf("%d",sum);else printf(" %d",sum);}return 0;
}
7-3 組合數(shù)的和(15分)
給定 N 個非 0 的個位數(shù)字,用其中任意 2 個數(shù)字都可以組合成 1 個 2 位的數(shù)字。要求所有可能組合出來的 2 位數(shù)字的和。例如給定 2、5、8,則可以組合出:25、28、52、58、82、85,它們的和為330。
輸入格式:
輸入在一行中先給出 N(1?<?N?<?10),隨后一行給出 N 個不同的非 0 個位數(shù)字。數(shù)字間以空格分隔。
輸出格式:
輸出所有可能組合出來的2位數(shù)字的和。
輸入樣例:
3
2 8 5
輸出樣例:
330
編譯器:GCC
代碼
#include<stdio.h>
int main()
{int m,sum=0,s[10];scanf("%d",&m);for(int i=0;i<m;i++){scanf("%d",&s[i]);sum+=s[i]*(m-1)*10+s[i]*(m-1);}printf("%d",sum);return 0;
}
7-4 求集合數(shù)據(jù)的均方差(15分)
設(shè)計函數(shù)求 N 個給定整數(shù)的均方差。若將 N 個數(shù) A[ ] 的平均值記為 Avg,
輸入格式:
輸入首先在第一行給出一個正整數(shù) N(≤104),隨后一行給出 N 個正整數(shù)。所有數(shù)字都不超過 1000,同行數(shù)字以空格分隔。
輸出格式:
輸出這N個數(shù)的均方差,要求固定精度輸出小數(shù)點后5位。
輸入樣例 1:
10
6 3 7 1 4 8 2 9 11 5
輸出樣例 1:
3.03974
輸入樣例 2:
1
2
輸出樣例 2:
0.00000
編譯器:GCC
代碼
# include<stdio.h>
# include<math.h>
int main()
{int A[10000],m,i,j,sum=0;double x,y1=0,y2=0;scanf("%d",&m);for(i=0;i<m;i++){scanf("%d",&A[i]);sum+=A[i];}x=sum*1.0/m;for(i=0;i<m;i++){y1+=(A[i]-x)*(A[i]-x);}y2=sqrt(y1/m);printf("%0.5lf",y2);return 0; }
7-5 矩陣A乘以B(15分)
給定兩個矩陣A和B,要求你計算它們的乘積矩陣AB。需要注意的是,只有規(guī)模匹配的矩陣才可以相乘。即若A有Ra?行、Ca?列,B有Rb?行、Cb?列,則只有Ca?與Rb?相等時,兩個矩陣才能相乘。
輸入格式:
輸入先后給出兩個矩陣A和B。對于每個矩陣,首先在一行中給出其行數(shù)R和列數(shù)C,隨后R行,每行給出C個整數(shù),以1個空格分隔,且行首尾沒有多余的空格。輸入保證兩個矩陣的R和C都是正數(shù),并且所有整數(shù)的絕對值不超過100。
輸出格式:
若輸入的兩個矩陣的規(guī)模是匹配的,則按照輸入的格式輸出乘積矩陣AB,否則輸出Error: Ca != Rb
,其中Ca
是A的列數(shù),Rb
是B的行數(shù)。
輸入樣例1:
2 3
1 2 3
4 5 6
3 4
7 8 9 0
-1 -2 -3 -4
5 6 7 8
輸出樣例1:
2 4
20 22 24 16
53 58 63 28
輸入樣例2:
3 2
38 26
43 -5
0 17
3 2
-11 57
99 68
81 72
輸出樣例2:
Error: 2 != 3
編譯器:GCC
代碼
#include<stdio.h>
int main()
{int row1 = 0;int col1 = 0;scanf("%d %d", &row1, &col1);int arr1[100][100] = { 0 };int i = 0;//輸入第一個矩陣for (i = 0; i < row1; i++){int j = 0;for (j = 0; j < col1; j++){scanf("%d", &arr1[i][j]);}}int row2 = 0;int col2 = 0;scanf("%d %d", &row2, &col2);int arr2[100][100] = { 0 };//輸入第二個矩陣for (i = 0; i < row2; i++){int j = 0;for (j = 0; j < col2; j++){scanf("%d", &arr2[i][j]);}}//判斷if (col1 != row2){printf("Error: %d != %d", col1, row2);}else{//輸出乘積矩陣printf("%d %d\n",row1,col2);for (i = 0; i < row1; i++){int j = 0;for (j = 0; j < col2; j++){int sum = 0;int k = 0;for (k = 0; k < row2; k++){sum += arr1[i][k] * arr2[k][j];}printf("%d", sum);if (j != col2 - 1){printf(" ");}else{printf("\n");}}}}return 0;}
7-6 點贊(20分)
微博上有個“點贊”功能,你可以為你喜歡的博文點個贊表示支持。每篇博文都有一些刻畫其特性的標簽,而你點贊的博文的類型,也間接刻畫了你的特性。本題就要求你寫個程序,通過統(tǒng)計一個人點贊的紀錄,分析這個人的特性。
輸入格式:
輸入在第一行給出一個正整數(shù)N(≤1000),是該用戶點贊的博文數(shù)量。隨后N行,每行給出一篇被其點贊的博文的特性描述,格式為“K?F1??FK?”,其中1≤K≤10,Fi?(i=1,?,K)是特性標簽的編號,我們將所有特性標簽從1到1000編號。數(shù)字間以空格分隔。
輸出格式:
統(tǒng)計所有被點贊的博文中最常出現(xiàn)的那個特性標簽,在一行中輸出它的編號和出現(xiàn)次數(shù),數(shù)字間隔1個空格。如果有并列,則輸出編號最大的那個。
輸入樣例:
4
3 889 233 2
5 100 3 233 2 73
4 3 73 889 2
2 233 123
輸出樣例:
233 3
編譯器:GCC
代碼
#include <stdio.h>
int main(){int i,j,k,N,K,F,max=0,cha[1001]={0};scanf("%d",&N);for(i=0;i<N;i++){scanf("%d",&K);for(j=0;j<K;j++){scanf("%d",&F);cha[F]++;if(cha[F]>cha[max]){max=F;}if(cha[F]==cha[max]&&F>max){max=F;}}}printf("%d %d",max,cha[max]);return 0;}
?
7-7?數(shù)組循環(huán)左移(20分)
本題要求實現(xiàn)一個對數(shù)組進行循環(huán)左移的簡單函數(shù):一個數(shù)組a中存有n(>0)個整數(shù),在不允許使用另外數(shù)組的前提下,將每個整數(shù)循環(huán)向左移m(≥0)個位置,即將a中的數(shù)據(jù)由(a0?a1??an?1?)變換為(am??an?1?a0?a1??am?1?)(最前面的m個數(shù)循環(huán)移至最后面的m個位置)。如果還需要考慮程序移動數(shù)據(jù)的次數(shù)盡量少,要如何設(shè)計移動的方法?
輸入格式:
輸入第1行給出正整數(shù)n(≤100)和整數(shù)m(≥0);第2行給出n個整數(shù),其間以空格分隔。
輸出格式:
在一行中輸出循環(huán)左移m位以后的整數(shù)序列,之間用空格分隔,序列結(jié)尾不能有多余空格。
輸入樣例:
8 3
1 2 3 4 5 6 7 8
輸出樣例:
4 5 6 7 8 1 2 3
編譯器:GCC
代碼
#include<stdio.h>
int main(){int i,n,j;int k;scanf("%d",&n);int m;scanf("%d",&m);int a[n];for(i=0;i<n;i++){scanf("%d",&a[i]);}for(i=0;i<m;i++){//每次移動一位,一共移動m次k=a[0];//保存第一位的值for(j=0;j<n-1;j++){a[j]=a[j+1];//數(shù)組向左移動} a[n-1]=k; //讓最后一位等于原本的第一位的值}for(i=0;i<n-1;i++){printf("%d ",a[i]);}printf("%d",a[n-1]);//結(jié)尾沒有空格return 0;
7-8 數(shù)列求和-加強版(20分)
給定某數(shù)字A(1≤A≤9)以及非負整數(shù)N(0≤N≤100000),求數(shù)列之和S=A+AA+AAA+?+AA?A(N個A)。例如A=1,?N=3時,S=1+11+111=123。
輸入格式:
輸入數(shù)字A與非負整數(shù)N。
輸出格式:
輸出其N項數(shù)列之和S的值。
輸入樣例:
1 3
輸出樣例:
123
編譯器:GCC
代碼
#include <stdio.h>int main() {
int result[100000]={0};//存放結(jié)果的每一位
int a=0,n=0;
scanf("%d %d",&a,&n);
int i=n;
int flag=0;
int cnt=0;//控制存放結(jié)果的位數(shù):從低位開始存
if(n==0)
printf("%d",0);
else
{for(;i>=1;i--){int temp=i*a+flag;result[cnt++]=temp%10;flag=temp/10;}//輸出結(jié)果:從高位開始輸出 if(flag!=0)//要注意高位 result[cnt++]=flag; i=cnt-1;for(;i>=0;i--){printf("%d",result[i]);}
}return 0;}