电设过初赛了好开森呐~

n+e posted @ 2016年11月14日 18:59 in 日常 , 3181 阅读

光棍节一个人过 男生节一个人过 qaq 微积分考的再高又有卵用?

微积分

构造之美

虽然这玩意儿跟考试没啥关系,但我觉得蛮有趣的。

From. 习题课_20161030

Prob. 设$\exists f^{\prime\prime}(x),\ f(1)=6,\ f^\prime (1)=0,\ \forall x\ge 1,\ x^2f^{\prime\prime}(x)-3xf^\prime (x)-5f(x)\ge 0.$

证明:$\forall x\ge 1,\ f(x)\ge x^5+\frac{5}{x}$

考虑函数 $$g(x)=\frac{f(x)}{x^5}-(1+\frac{5}{x^6})$$ $$g^\prime(x)=\frac{x^2f^\prime(x)-5xf(x)+30}{x^7}$$

考察分子$$h(x)=x^2f^\prime(x)-5xf(x)+30$$

$$h^\prime (x)=\ x^2f^{\prime\prime}(x)-3xf^\prime (x)-5f(x)\ge 0$$

$$\therefore h(x)\ge h(1)>0 \Rightarrow g^\prime(x)>0$$

$$\therefore g(x)\ge g(1)=0$$

 

From. 练习题_20161106_Taylor的应用

$f(x)\in C[a,b],\ f(x)\in D^2(a,b),\ $证明$\exists \xi\in (a,b),\ s.t. $ $$\frac{\frac{f(x)-f(a)}{x-a}-\frac{f(b)-f(a)}{b-a}}{x-b}=\frac{1}{2}f^{\prime\prime}(\xi)$$

构造函数$$F(t)=\begin{vmatrix}f(t)&1&t&t^2\\f(x)&1&x&x^2\\f(a)&1&a&a^2\\f(b)&1&b&b^2\end{vmatrix}$$

$$\therefore F(x)=F(a)=F(b)=0\wedge F^{\prime\prime}(t)=\begin{vmatrix}f^{\prime\prime}(t)&0&0&2\\f(x)&1&x&x^2\\f(a)&1&a&a^2\\f(b)&1&b&b^2\end{vmatrix}$$

$$\therefore F(x)=F(a)=F(b)=0\Rightarrow F^\prime(\xi_1)=F^\prime(\xi_2)=0\Rightarrow F^{\prime\prime}(\xi)=0$$

将$F^{\prime\prime}(\xi)=0$展开即可得到答案。

听说有人期中考最后一题没做出来?

题目:$f(0)=0,\ f(1)=1,\ f^\prime (x)>0,\ $

证明 $\forall n\in \mathbb{N}^+,\ \exists \xi_{1..n}\in (0,1),\ \xi_i\neq \xi_j,\ s.t. \sum_{i=1}^n \frac{1}{f^\prime(\xi_i)}=n$

一个很自然的想法是,考虑区间 $(0,\frac{1}{n}),\ (\frac{1}{n},\frac{2}{n}),\cdots ,\ (\frac{n-1}{n},1)$,在每个区间上用一次中值定理,则有

$$f^\prime(\xi_k)=\frac{f(\frac{k}{n})-f(\frac{k-1}{n})}{\frac{k}{n}-\frac{k-1}{n}}=n(f(\frac{k}{n})-f(\frac{k-1}{n}))$$

求和即有 $\sum_{i=1}^n f^\prime(\xi_i)=n(f(1)-f(0))=n$

但是,答案里面要证导数的倒数和为0,怎么办呢?考虑反函数就好了。就酱。

听说某个智障用积分来做夹逼的题目?

错在哪里呢?夹逼得出来的答案 1 肯定没问题。

$$\lim_{n\to \infty}n\sum_{i=1}^n \frac{1}{n^2+i\pi}=1$$

然而变个形式,就是求 $$\sum_{i=1}^n \frac{1}{n+\frac{i}{n}\pi}$$

当 $n\to \infty$ 的时候,$\frac{i}{n}$ 取遍 $[0,1]$,于是把求和换成积分变成

$$\lim_{n\to\infty}\int_0^1 \frac{1}{n+x\pi}\, dx$$

就是$$\lim_{n\to\infty} \left.\frac{\ln (n+x\pi)}{\pi}\right|_{x=1}-\left.\frac{\ln (n+x\pi)}{\pi}\right|_{x=0}$$

然而 $$\lim_{n\to\infty} \frac{1}{\pi}\ln\frac{n+\pi}{n}=0$$

$\therefore 1=0\ ???$ hhh 真的了解 dx 吗

程设

为了公众号吸粉学委也是不择手段了…

大家刚考完C语言,然后这里简单讲评一下AB卷。

清华大学《计算机语言与程序设计》2016年秋季学期 期中测试 (A卷)

A1、单词替换(30分)

假设一个英文语句sentence,该语句中的单词是以空格为间隔的。然后有两个单词word1和word2,请将英文句子sentence中的所有单词word1用word2进行替换。

如,输入的语句为”I love red and round apples”,输入的单词分别为”round”和”sweet”,则替换后的语句为”I love red and sweet apples”。

 

可能有的人会把这种题写复杂了吧……这种题目不要在原串上进行操作,重新开一个串来储存结果,会好写很多。

sublime并不支持中文所以我就懒得打了。

#include <cstdio>
#include <cstring>
bool check(char *s, char *w)
{//判断两个字符串是否相等,以w为标准
    for (; *w && *s; s++, w++)
        if (*s != *w)
            return 0;
    return 1;
}
int main(int argc, char const *argv[])
{
    char s[256] = "", w1[20] = "", w2[20] = "", ans[300] = "";
    printf("Please input the sentence: ");
    gets(s);
    printf("Please input two words: ");
    scanf("%s%s", w1, w2);
    int l1 = 0;
    for (; w1[l1]; l1++);
    printf("After replacement: ");
    for (int i = 0, j = 0; s[i]; i++)
        if (check(&s[i], &w1[0]))
        {//如果相等直接替换
            for (int k = 0; w2[k]; ans[j++] = w2[k++]);
            i += l1 - 1;
        }
        else ans[j++] = s[i]; 
    puts(ans);
    return 0;
}
/*
I love red and round apples
red sweet
*/

A2、矩阵处理(30分)

已知一个$M$行$N$列的整数矩阵$A$,请从这个原始矩阵中以$a_{i,j}$为右下角元素抽取一个$m\times n$的子矩阵$B$,要求$a_{i,j}$必须位于$A$中,如果抽取的子矩阵$B$的范围超出原始矩阵$A$的范围,则子矩阵$B$中的这些元素将赋值为$0$。最后请将子矩阵$B$顺时针旋转$90^\circ$,得到结果矩阵$C$。

如:原始矩阵$A$为$\begin{vmatrix}1&2&3\\4&5&6\\7&8&9\end{vmatrix}$,若输入的右下角元素为$a_{1,1}$,输入的$m$、$n$分别为$2$、$3$,则子矩阵$B$为$\begin{vmatrix}0&1&2\\0&4&5\end{vmatrix}$,旋转后的结果矩阵$C$为$\begin{vmatrix}0&0\\4&1\\5&2\end{vmatrix}$。

 

这题考察点在计算坐标上,然而只要多开几个变量,就可以完全避免掉计算问题。

可以使用%-3d来向左对齐。

#include <cstdio>
#include <cstring>
int main(int argc, char const *argv[])
{
	int a[10][15], b[20][20], c[20][20];
	for (int i = 0, cnt = 0; i < 10; ++i)
		for (int j = 0; j < 15; ++j)
			a[i][j] = ++cnt;
	for (int i, j, n, m;
		printf("Please input i,j and m,n:"),
		scanf("%d%d%d%d",&i,&j,&m,&n), n&&m; )
	{
		if (i >= 10 || j >= 15)
		{
			puts("Error! Can not extract submatrix.\n");
			continue;
		}
		memset(b, 0, sizeof b);
		memset(c, 0, sizeof c);
		for (int x = m-1, ax = i; ax >= 0 && x >= 0; x--, ax--)
			for (int y = n-1, ay = j; ay >= 0 && y >= 0; y--, ay--)
				b[x][y] = a[ax][ay]; 
		//其实ax、ay坐标是可以算出来的,但是 让电脑算好呢 还是 让人算好呢?
		for (int x = 0, cx = m-1; x < m; x++, cx--)
			for (int y = 0; y < n; y++)
				c[y][cx] = b[x][y];
		//其实cx坐标是可以算出来的,但是 让电脑算好呢 还是 让人算好呢?
		printf("The submatrix B (%d*%d)is:\n", m, n);
		for (int x = 0; x < m; x++, puts(""))
			for (int y = 0; y < n; y++)
				printf("%-4d ", b[x][y]);
		printf("The submatrix C (%d*%d)is:\n", n, m);
		for (int x = 0; x < n; x++)
			for (int y = 0; y < m; y++)
				printf("%-4d%c", c[x][y], " \n"[y == m-1]);
		puts("");
	}
	puts("Programe end.");
	return 0;
}

A3、字符串处理(25分)

请按照如下的要求对于字符串中的字符进行消除处理。

(1)每次都从字符串的首元素开始,对连续出现2次(含2次)以上的字符进行处理。

(2)处理的规则为:若连续出现的字符为偶数个,这些连续字符就消除;若连续出现的字符为奇数个,这些连续字符就保留一个。

(3)重复上述消除处理步骤,直到字符串中不再有连续出现的字符为止。

(4)假设原始字符串长度不超过256。

如:原始的字符串为“aaabbaaab”则处理的过程为

“aaabbaaab”→“abbaaab”→“aaaab”→“b”

 

考察for语句的使用和字符串操作。感觉只能靠代码说清楚了。我在里面加了一些c语言上的技巧。

#include <cstdio>
bool equal(const char *s, const char *t)
{//判断两个字符串是否相等
	for (int i = 0; s[i] || t[i]; i++)
		if (s[i] != t[i]) return 0;
	return 1;
}
bool check(char *s)
{//判断字符串s是否可以继续执行消除操作
	for (int i = 0, j; s[i]; i = j)
	{
		for (j = i; s[j] == s[i]; j++);
		//这一步结束以后,s[i~j-1]都是相同的字符
		if (j - i >= 2) //j-i就是相同字符的长度
			return 1;
	}
	return 0;
}
void work(char *s)
{
	char tmp[256] = "";
	for (int i = 0, j, k = 0; s[i]; i = j)
	{
		for (j = i; s[i] == s[j]; j++);
		if (j - i >= 2 && (j - i) & 1 || j - i < 2)
			tmp[k++] = s[i];
		for (int l = i; l < j; l++) //把s[i~j-1]清空
			s[l] = 0;
	}
	for (int i = 0; tmp[i]; i++)
		s[i] = tmp[i];
}
int main(int argc, char const *argv[])
{
	for (char str0[256] = "";
		printf("Please input the original string, \
enter 'quit' or 'exit' to end this program:"),
		scanf("%s",str0), 
		!equal(str0, "quit") && !equal(str0, "exit");
		puts(str0))
		for (printf("After processed: "); check(str0); work(str0));
	//你真的熟悉for吗hhh	
	puts("Program end");
	return 0;
}

A4、数字处理(15分)

有200个4位正整数,请按照如下的要求编写程序对于这些数字进行处理。

(1)分析每个4位正整数的高三位、低三位分别构成的数值对(假设不考虑低三位数值为000的情况),并计算出每对数的最大公约数; 

(2)求所有最大公约数的均值,并找出最大公约数距离该均值最远的所有4位正整数,并将结果输出。

请使用如下的200个正整数:

8478,9782,2622,7840,8933,5163,5057,5820,6929,3882,9808,3508,9704,6034,

5395,7560,7720,8015,6070,7841,7148,5608,2103,4871,9560,1797,7625,4738,

1041,3809,5717,4664,7905,3164,1063,6934,5681,8869,2943,5914,3255,7478,

6722,9625,1611,3063,8920,5996,5245,6640,6783,5192,6145,1377,2216,8342,

4821,3324,5304,4792,1906,1662,8362,5341,3833,5514,2346,7967,8384,5799,

7037,7123,8333,2531,6360,2193,6435,5743,9726,5645,3355,8388,2430,3685,

7188,5270,7860,2667,1246,3553,9999,2133,2043,4970,1435,5803,4799,1951,

5304,9705,3769,5425,3578,4919,1475,5297,4842,2437,8623,5473,2125,7298,

7866,2612,8684,6959,5710,8952,9076,7919,4042,6587,8590,5778,4524,1172,

9130,2827,8826,4059,9679,7734,4973,3532,7638,2205,4784,1960,6808,6469,

9336,5573,6725,8789,5083,2591,2199,2543,5550,3326,6734,5906,2138,1226,

6173,8631,6062,7628,2773,2458,8499,6279,5737,2756,9772,3447,5889,7231,

6084,2633,5578,3985,6605,2835,9270,9612,9334,3765,5545,3621,4189,9912,

3540,5708,5325,6662,5525,5483,6009,5635,6990,5251,6426,5050,2652,8899,

6349,6347,4835,2907

 

就是一个模拟。我看了好多遍,确定是最远距离。然后看着答案怪怪的。

#include <cstdio>
int gcd(int x, int y) 
{
	return !y ? x : gcd(y, x % y);
}
#define abs(x) (x>0?x:-(x))
int main(int argc, char const *argv[])
{
	int a[200]={
8478,9782,2622,7840,8933,5163,5057,5820,6929,3882,9808,3508,9704,6034,5395,7560,
7720,8015,6070,7841,7148,5608,2103,4871,9560,1797,7625,4738,1041,3809,5717,4664,
7905,3164,1063,6934,5681,8869,2943,5914,3255,7478,6722,9625,1611,3063,8920,5996,
5245,6640,6783,5192,6145,1377,2216,8342,4821,3324,5304,4792,1906,1662,8362,5341,
3833,5514,2346,7967,8384,5799,7037,7123,8333,2531,6360,2193,6435,5743,9726,5645,
3355,8388,2430,3685,7188,5270,7860,2667,1246,3553,9999,2133,2043,4970,1435,5803,
4799,1951,5304,9705,3769,5425,3578,4919,1475,5297,4842,2437,8623,5473,2125,7298,
7866,2612,8684,6959,5710,8952,9076,7919,4042,6587,8590,5778,4524,1172,9130,2827,
8826,4059,9679,7734,4973,3532,7638,2205,4784,1960,6808,6469,9336,5573,6725,8789,
5083,2591,2199,2543,5550,3326,6734,5906,2138,1226,6173,8631,6062,7628,2773,2458,
8499,6279,5737,2756,9772,3447,5889,7231,6084,2633,5578,3985,6605,2835,9270,9612,
9334,3765,5545,3621,4189,9912,3540,5708,5325,6662,5525,5483,6009,5635,6990,5251,
6426,5050,2652,8899,6349,6347,4835,2907}, b[200], sum = 0, cnt = 0;
	for (int i = 0; i < 200; sum += b[i++])
		b[i] = gcd(a[i] % 1000, a[i] / 10);
	float average = sum / 200., max = 0, c[200];
	printf("Average of gcd is: %.2f\n",average);
	for (int i = 0; i < 200; i++)
		if ((c[i] = abs(average - b[i])) > max)
			max = c[i];
	for (int i = 0; i < 200; i++)
		if (c[i] == max)
			cnt++;
	printf("The number of the furthest number is %d\n",cnt);
	printf("They are: ");
	for (int i = 0; i < 200; i++)
		if (c[i] == max)
		{
			printf("%d", a[i]);
			if (--cnt) putchar(',');
		}
	puts("");
	return 0;
}

清华大学《计算机语言与程序设计》2016年秋季学期 期中测试 (B卷)

B1、字符串处理(25分)

请按照如下的要求对于字符串中的字符进行消除处理。

(1)每次都从字符串的尾元素开始向前处理,对连续出现2次(含2次)以上的字符进行操作。

(2)操作的规则为:若连续出现的字符为奇数个,这些连续字符就消除;若连续出现的字符为偶数个,这些连续字符就保留一个。

(3)重复上述消除处理步骤,直到字符串中不再有连续出现的字符为止。

(4)假设原始字符串长度不超过256。

如:原始的字符串为“aaabbaaab”则处理的过程为“aaabbaaab”→“aaabbb”→“aaa”→“”

再如:原始的字符串为“aaabbaab”则处理的过程为“aaabbaab”→“aaabbab”→“aaabab”→“bab”

 

就是A卷的第三题把一些东西改一下。我为了方便把字符串先翻转,变成从前往后处理,最后再翻回来就好。

#include <cstdio>
void reverse(char*s)
{
	int len = 0;
	char tmp;
	for (; s[len + 1]; len++);
	for (int i = 0, j = len; i < j; i++, j--)
		tmp = s[i], s[i] = s[j], s[j] = tmp;
}
bool check(char *s)
{//判断字符串s是否可以继续执行消除操作
	for (int i = 0, j; s[i]; i = j)
	{
		for (j = i; s[j] == s[i]; j++);
		//这一步结束以后,s[i~j-1]都是相同的字符
		if (j - i >= 2) //j-i就是相同字符的长度
			return 1;
	}
	return 0;
}
void work(char *s)
{
	char tmp[256] = "", flag = 0;
	for (int i = 0, j, k = 0; s[i] && !flag; i = j)
	{
		for (j = i; s[i] == s[j]; j++);
		if (j - i >= 2 && (j - i) % 2 == 0 || j - i < 2)
			tmp[k++] = s[i];
		if (j - i >= 2)
			flag = 1;
		for (int l = i; l < j; l++) //把s[i~j-1]清空
			s[l] = 0;
		if (flag)
			for (; s[j]; j++)
				tmp[k++] = s[j], s[j] = 0;
	}
	for (int i = 0; tmp[i]; i++)
		s[i] = tmp[i];
}
int main(int argc, char const *argv[])
{
	for (char str0[256] = "", read[2];
		printf("Do you want to process the string? Tap '@' for exit."),
		scanf("%s",read), read[0] != '@';
		reverse(str0), puts(str0), puts(""))
		for (printf("Please input the original string: "),
		scanf("%s",str0), reverse(str0), 
		printf("After processed: "); check(str0); work(str0));
	//你真的熟悉for吗hhh	
	puts("Program end");
	return 0;
}

B2、矩阵处理(30分)

已知一个$M$行$N$列的整数矩阵$A$,请从这个原始矩阵中以$a_{i,j}$为左上角元素抽取一个$m\times n$的子矩阵$B$,要求$a_{i,j}$必须位于$A$中,如果抽取的子矩阵$B$的范围超出原始矩阵$A$的范围,则子矩阵$B$中的这些元素将赋值为$0$。最后请将子矩阵$B$逆时针旋转$90^\circ$,得到结果矩阵$C$。

如:原始矩阵$A$为$\begin{vmatrix}1&2&3\\4&5&6\\7&8&9\end{vmatrix}$,若输入的左上角元素为$a_{1,1}$,输入的$m$、$n$分别为$2$、$3$,则子矩阵$B$为$\begin{vmatrix}5&6&0\\8&9&0\end{vmatrix}$,旋转后的结果矩阵$C$为$\begin{vmatrix}0&0\\6&9\\5&8\end{vmatrix}$。

 

A卷第二题。我已经把不同的地方加粗标出来了。

#include <cstdio>
#include <cstring>
int main(int argc, char const *argv[])
{
	int a[10][15], b[20][20], c[20][20];
	for (int i = 0, cnt = 0; i < 10; ++i)
		for (int j = 0; j < 15; ++j)
			a[i][j] = ++cnt;
	for (int i, j, n, m;
		printf("Please input i,j and m,n:"),
		scanf("%d%d%d%d",&i,&j,&m,&n), n&&m; )
	{
		if (i >= 10 || j >= 15)
		{
			puts("Error! Can not extract submatrix.\n");
			continue;
		}
		memset(b, 0, sizeof b);
		memset(c, 0, sizeof c);
		for (int x = 0, ax = i; ax < 10 && x < m; x++, ax++)
			for (int y = 0, ay = j; ay < 15 && y < n; y++, ay++)
				b[x][y] = a[ax][ay];
		//其实ax、ay坐标是可以算出来的,但是 让电脑算好呢 还是 让人算好呢?
		for (int x = 0; x < m; x++)
			for (int y = 0, cy = n-1; y < n; y++, cy--)
				c[cy][x] = b[x][y];
		//其实cy坐标是可以算出来的,但是 让电脑算好呢 还是 让人算好呢?
		printf("The submatrix B (%d*%d)is:\n", m, n);
		for (int x = 0; x < m; x++, puts(""))
			for (int y = 0; y < n; y++)
				printf("%-3d ", b[x][y]);
		printf("The submatrix C (%d*%d)is:\n", n, m);
		for (int x = 0; x < n; x++)
			for (int y = 0; y < m; y++)
				printf("%-3d%c", c[x][y], " \n"[y == m-1]);
		puts("");
	}
	puts("Programe end.");
	return 0;
}

B3、单词倒序(30分)

假设一个英文语句sentence,该语句中的单词是以空格或逗号为间隔的。请将英文句子sentence中的所有单词进行局部倒序输出。

如,输入的语句为”I love red and sweet apples, you love bananas”,则单词内局部倒序后的语句为”I evol der dna teews selppa, uoy evol sananab”。

再如,输入的语句为” I love red and sweet and big apples, you love bananas.”,则单词内局部倒序后的语句为”I evol der dna teews dna gib selppa, uoy evol .sananab”。(我觉得句逗应该放后面因为它不算单词一部分...)

 

找分界点,有空格或者逗号就停下。

一个小技巧是在字符串后面加一个空格,处理起来会方便。

#include <cstdio>
void reverse(char *s, int l, int r)
{
	for (char tmp; l < r; l++, r--)
		tmp = s[l], s[l] = s[r], s[r] = tmp;
}
int main(int argc, char const *argv[])
{
	char s[256];
	printf("Please input the sentence: ");
	gets(s);
	for (int i = 0; s[i]; i++)
		if (s[i] && !s[i + 1])
			{
				s[i + 1] = ' ';
				break;
			}
	for (int i = 0, j; s[i]; i = j)
	{
		for (j = i; s[j] != ' ' && s[j] != ','; j++);
		for (reverse(s, i, j - 1); s[j] == ' ' || s[j] == ','; j++);
	}
	printf("After processed: %s\n",s);
	return 0;
}

B4、数字处理(15分)

有200个4位正整数,请按照如下的要求编写程序对于这些数字进行处理。

(1)分析每个4位正整数的高三位、低三位分别构成的数值对(假设不考虑低三位数值为000的情况),并计算出每对数的最大公约数; 

(2)求所有最大公约数的均值,并找出最大公约数距离该均值最近的所有4位正整数,并将结果输出。

请使用如下的200个正整数:

8478,9782,2622,7840,8933,5163,5057,5820,6929,3882,9808,3508,9704,6034,

5395,7560,7720,8015,6070,7841,7148,5608,2103,4871,9560,1797,7625,4738,

1041,3809,5717,4664,7905,3164,1063,6934,5681,8869,2943,5914,3255,7478,

6722,9625,1611,3063,8920,5996,5245,6640,6783,5192,6145,1377,2216,8342,

4821,3324,5304,4792,1906,1662,8362,5341,3833,5514,2346,7967,8384,5799,

7037,7123,8333,2531,6360,2193,6435,5743,9726,5645,3355,8388,2430,3685,

7188,5270,7860,2667,1246,3553,9999,2133,2043,4970,1435,5803,4799,1951,

5304,9705,3769,5425,3578,4919,1475,5297,4842,2437,8623,5473,2125,7298,

7866,2612,8684,6959,5710,8952,9076,7919,4042,6587,8590,5778,4524,1172,

9130,2827,8826,4059,9679,7734,4973,3532,7638,2205,4784,1960,6808,6469,

9336,5573,6725,8789,5083,2591,2199,2543,5550,3326,6734,5906,2138,1226,

6173,8631,6062,7628,2773,2458,8499,6279,5737,2756,9772,3447,5889,7231,

6084,2633,5578,3985,6605,2835,9270,9612,9334,3765,5545,3621,4189,9912,

3540,5708,5325,6662,5525,5483,6009,5635,6990,5251,6426,5050,2652,8899,

6349,6347,4835,2907

 

就是一个模拟。我看了好多遍,确定是最近距离。这才科学嘛。

#include <cstdio>
int gcd(int x, int y) 
{
	return !y ? x : gcd(y, x % y);
}
#define abs(x) (x>0?x:-(x))
int main(int argc, char const *argv[])
{
	int a[200]={
8478,9782,2622,7840,8933,5163,5057,5820,6929,3882,9808,3508,9704,6034,5395,7560,
7720,8015,6070,7841,7148,5608,2103,4871,9560,1797,7625,4738,1041,3809,5717,4664,
7905,3164,1063,6934,5681,8869,2943,5914,3255,7478,6722,9625,1611,3063,8920,5996,
5245,6640,6783,5192,6145,1377,2216,8342,4821,3324,5304,4792,1906,1662,8362,5341,
3833,5514,2346,7967,8384,5799,7037,7123,8333,2531,6360,2193,6435,5743,9726,5645,
3355,8388,2430,3685,7188,5270,7860,2667,1246,3553,9999,2133,2043,4970,1435,5803,
4799,1951,5304,9705,3769,5425,3578,4919,1475,5297,4842,2437,8623,5473,2125,7298,
7866,2612,8684,6959,5710,8952,9076,7919,4042,6587,8590,5778,4524,1172,9130,2827,
8826,4059,9679,7734,4973,3532,7638,2205,4784,1960,6808,6469,9336,5573,6725,8789,
5083,2591,2199,2543,5550,3326,6734,5906,2138,1226,6173,8631,6062,7628,2773,2458,
8499,6279,5737,2756,9772,3447,5889,7231,6084,2633,5578,3985,6605,2835,9270,9612,
9334,3765,5545,3621,4189,9912,3540,5708,5325,6662,5525,5483,6009,5635,6990,5251,
6426,5050,2652,8899,6349,6347,4835,2907}, b[200], sum = 0, cnt = 0;
	for (int i = 0; i < 200; sum += b[i++])
		b[i] = gcd(a[i] % 1000, a[i] / 10);
	float average = sum / 200., min = 10000, c[200];
	printf("Average of gcd is: %.2f\n",average);
	for (int i = 0; i < 200; i++)
		if ((c[i] = abs(average - b[i])) < min)
			min = c[i];
	for (int i = 0; i < 200; i++)
		if (c[i] == min)
			cnt++;
	printf("The number of the nearest number is %d\n",cnt);
	printf("They are: ");
	for (int i = 0; i < 200; i++)
		if (c[i] == min)
		{
			printf("%d", a[i]);
			if (--cnt) putchar(',');
		}
	puts("");
	return 0;
}

---By n+e
NoNoSS 说:
2017年1月02日 16:33

金牌爷竟然担心大学程序设计

Avatar_small
n+e 说:
2017年1月05日 22:51

@NoNoSS: 并没有啊。。。我只是给同学写一下,有些人是零基础


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter