主頁 > 軟體設計 > 一贊一道題 11.6-11.7

一贊一道題 11.6-11.7

2021-11-09 08:31:48 軟體設計

flag一贊一道題代碼

/*1001 害死人不償命的(3n+1)猜想 (15 分)
#include<stdio.h>
int main() {
	int n=0;
	int i=0;
	scanf_s("%d", &n);
	while (n != 1) {
		if (n % 2) {
			n = (3 * n + 1) / 2;

		}
		else {
			n = n / 2;
		}
		i++;
	}
	printf("%d", i);
	return 0;
}
*/
/*1002 成績排名 (20 分)#include<stdio.h>
int main() {
	int n = 0;
	int i, j;
	scanf("%d", &n);
	char Name[n][10];
}
#include<stdio.h>	
int main() {
	int n = 0;
	int i, j;
	int target1;
	int target2;
	scanf("%d", &n);
	char Name[n][10];
	char StdNum[n][10];
	int Score[n];
	for (i = 0; i < n; i++) {
		scanf("%s", Name[i]);
		scanf("%s", StdNum[i]);
		scanf("%d", &Score[i]);
	}
	for (j = 0; j < n; j++) { //實作求最大值 
		int* max = NULL;
		max = &Score[0];
		if (Score[j] > *max) {
			max = &Score[j];
			target1 = j;
		}
	}
	for (i = 0; i < n; i++) { //實作求最小值 
		int* min = NULL;
		min = &Score[0];
		if (Score[i] < *min) {
			min = &Score[i];
			target2 = i;
		}
	}
	printf("%s", Name[i]);
	printf("%s", StdNum[i]);
	printf("%d", Score[i]);
	printf("\n");
	printf("%s", Name[j]);
	printf("%s", StdNum[j]);
	printf("%d", Score[j]);
	return 0;
}*/

//1003 繼續(3n + 1)猜想(25 分)
/*#include<stdio.h>
#define N 1000
int main() {
	int k;
	scanf_s("%d", &k);
	int i = 0;
	int j = 0;
	int target1 = 0;//比較陣列的大小
	int target2 = 0;
	int n[N];
	int temp = 0;
	int Cmpare[N];
	while (k != 1) {
		if (k % 2) {
			k = (3 * k + 1) / 2;
			n[i] = k;
			i++; target2++;
		}
		else {
			k = k / 2;
			n[i] = k;
			i++; target2++;
		}//得到標準陣列
	}
	for (j = 0; j < N; j++) {
		scanf_s("%d", Cmpare[j]);//輸入比較陣列
		for (i = 0; i < target2; i++) {
			if (Cmpare[j] = n[i]) {
				Cmpare[target1] = n[j];
				target1++;
			}
		}
	}
	for (i = 0; i < target1; i++) {
		if (Cmpare[i] > Cmpare[i + 1]) {
			temp = Cmpare[i];
			Cmpare[i] = Cmpare[i + 1];
			Cmpare[i + 1] = temp;
		}
	}
	for (i = 0; i < target1; i++) {
		printf("%d", Cmpare[i]);
	}
	return 0;
}*/
// 1004 換個格式輸出整數(15 分)
/*
#include<stdio.h>
int main() {
	int n;
	scanf_s("%d", &n);
	int B = 0;
	int S = 0;
	int G = 0;
	B = n / 100;
	S = n / 10-B*10;
	G = n - S * 10-B*100;
	while (B != 0) {
		printf("B");
		B--;
	}
	while (S != 0) {
		printf("S");
		S--;
	}
	int i = 1;
	while (G != 0) {
		printf("%d", i);
		i++;
		G--;
	}
	return 0;
}*/
//1005 素數對猜想 (20 分)
/*
#include<stdio.h>
#include<math.h>
int pan(int a)//判斷素數
{
	int index=1;
	if(a<=1) index=0;
	else{
		for(int i=2; i<=sqrt(a); i++){//判斷素數,直接判斷2到根號a就OK
			if(a%i==0)
			index=0;
		}
	}
	if(index==0){
		return 0;
	}else if(index==1){
		return 1;
	}
}
int main(void){
	int n;
	int cont=0;
	scanf("%d",&n);
	int a[10000];
	int k=1;
	for(int i=0; i<=n; i++){//把素數存到陣列
		if(pan(i)==1){
			a[k]=i;
			k++;
		}
	}
	int cha;
	for(int i=1; i<=k-1; i++){//找相鄰的差為2的素數
		cha=a[i+1]-a[i];
		if(cha==2)
		cont++;
	}
	printf("%d",cont);
	return 0;
}

#include<stdio.h>
int main() {
	int N;
	scanf_s("%d", &N);
	int i;
	int j = 0;
	int p[1000];
	int target=0;
	int Num=0;

	for (i = 2; i < N; i++) {
		for(j=0;j<N;j++){
			while (i%2 == 1) {
				p[j] = i;//素數表
				target++;
			}
		}
	}
	for (i = 0; i < target; i++) {
		if ((p[i + 1] - p[i]) % 2) {
			Num++;
		}
	}
	printf("%d", Num);
	return 0;
}
*/

/*1006 陣列元素回圈右移問題
#include<stdio.h>
int main() {
	int N = 0;//陣列大小
	scanf("%d", &N);
	int n[N];//初始陣列
	int* p[N];
	int i;//陣列下標
	p[0] = &n[0];
	int j = 0;//
	int M;
	scanf_s("%d", &M);//向右平移單位
	for (i = 0; i < N;i++) {
		scanf("%d", &n[i]);
	}//陣列n[]的讀入
	for (j = 0; j < N - M; j++) {
		p[j+M] = p[j];
	}
	i = 0;
	while (j >= N - M) {
		p[i] = p[j];
		i++;
	}
	for (i = 0; i < N; i++) {
		printf("%d",* p[i]);
	}
	return 0;
}	
#include<stdio.h>
int main()
{
	int len, move;
	int i = 0;
	scanf("%d%d", &len, &move);
	int nums[len];
	for (i = 0; i < len; i++) {
		scanf("%d", &nums[i]);
	}
	move = move % len;
	for (i = len - move; i < len; i++) {
		printf("%d ", nums[i]);
	}
	for (i = 0; i < len - move; i++) {
		if (i == len - move - 1)
			printf("%d", nums[i]);
		else
			printf("%d ", nums[i]);

	}
	return 0;
}
*/

/*1007 shuzifenlei
#include<stdio.h>
int main() {
	int N =8;
	int n[8];
	int i,j;
	int A1 = 0;
	int num1 = 0;//被5整除 所有偶數和
	int A2= 0;
	int num2 = 0;
	int A3 = 0;
	int num3 = 0;
	int A4= 0;
	int num4 = 0;
	int A5 = 0;
	int num5 = 0;
	for (i = 0; i <= N; i++) {
		scanf_s("%d", &n[i]);
	}
	for (i = 0; i < N; i++) {
		while (n[i] % 5) {
			A1 = A1+n[i];
			num1++;
		}
	}
	for (i = 0; i < N; i++) {
		while (n[i] % 5 == 1) {
			if (i == 0 || n[i] % 2) {
				n[i] = -n[i];
				num2++;
				A2 = A2 + n[i];
			}
		}
	}
	for (i = 0; i < N; i++) {
		while (n[i] % 5 == 2) {
			num3++;
		}
	}
	for (i = 0; i < N; i++) {
		while (n[i] % 5 == 3) {
			A3 = A3 + n[i];
			num4++;
		}
	}
	for (i = 0; i < N; i++) {
		while (n[i] % 5 == 4) {
			if (n[i] > A5) {
				A5 = n[i];
			}
		}
	}
	if (num1== 0) {
		printf("N");
	}else{ printf("%d", A1 / num1); }
	if (num2 == 0) {
		printf("N");
	}else{ printf("%d", A2); }
	if (num3 == 0) {
		printf("N");
	}
	else {
		printf("%d", num3);
	}
	if (num4 == 0) {
		printf("N");
	}
	else {
		printf("%.1f", (double)A4/(double)num4);
	}

	if (num5 == 0) {
		printf("N");
	}
	else {
		printf("%d", A5);
	}
	return 0;
}*/
/*1008部分a+b*/

/*1009檢查密碼#include <iostream>

using namespace std;

int main() {
	int N;
	cin >> N;
	getchar();
	while (N--) {
		string str;
		getline(cin, str);
		if (str.size() < 6) {
			cout << "Your password is tai duan le." << endl;
		}
		else {
			bool f1 = 0, f2 = 0, f3 = 0;    //表示是否有字母或數字或不合法字符
			for (unsigned i = 0; i < str.size(); i++) {
				if (str[i] >= 'A' && str[i] <= 'Z' || str[i] >= 'a' && str[i] <= 'z') {
					f1 = 1;
				}
				else if (str[i] >= '0' && str[i] <= '9') {
					f2 = 1;
				}
				else if (str[i] == '.') {
					continue;
				}
				else {
					cout << "Your password is tai luan le." << endl;
					f3 = 1;
					break;
				}
			}
			if (f3) {	//有不合法字符且已輸出
				continue;
			}
			if (f1 && f2) {
				cout << "Your password is wan mei." << endl;
			}
			else if (!f1) {
				cout << "Your password needs zi mu." << endl;
			}
			else {
				cout << "Your password needs shu zi." << endl;
			}
		}
	}
	return 0;
}
*/

/*1010小賭怡情
#include<stdio.h>
int main() {
	int  b, t;
	int T; int K;
	scanf("%d", &T);//輸入初始籌碼
	scanf("%d", &K);//輸入玩的次數
	int n1[K];
	int n2[K];
	int i = 0;
	int Km = K;
	while (K > 0) {
		scanf("%d %d %d %d", &n1[i], &b, &t, &n2[i]);//n1、n2游戲資料,b押寶,t籌碼
		i++;
		K--;
	}//輸入游戲資料

	for (i = 0; i < Km; i++) {
		if (n1[i] > n2[i] && T >= t&&b==0) {
			T = T + t;
			printf("win %d! Total=%d\n", t, T);
		}
		if (n1[i] < n2[i] && T >= t&&b==1) {
			T = T - t;
			printf("Lose %d. Total=%d\n", t, T);
		}
		if (n1[i] > n2[i] && T >= t && b == 0) {
			T = T - t;
			printf("Lose %d. Total=%d\n", t, T);
		}
		if (n1[i] < n2[i] && T >= t && b == 1) {
			T = T + t;
			printf("win %d! Total=%d\n", t, T);
		}
		if (T < t) {
			printf("Not enough tokens. Total = %d\n", T);
		}

		if (T == 0) {
			printf("Game Over.\n");
			break;
		}	//游戲程序
	}return 0;
}

#include <stdio.h>
int main(){
	int t,k,n1,b,c,n2,i;
	scanf("%d %d",&t,&k);
	for(i=0;i<k;i++){
		scanf("%d %d %d %d",&n1,&b,&c,&n2);
		if(c<=t){
			if((b==0 && n2<n1) || (b==1 && n2>n1)){
				t=t+c;
				printf("Win %d!  Total = %d.\n",c,t);
			}
			else{
				t=t-c;
				printf("Lose %d.  Total = %d.\n",c,t);
				if(t<=0){
					printf("Game Over.\n");
					break;
				}
			}
		}
		else{
			printf("Not enough tokens.  Total = %d.\n",t);
		}
	}
	return 0;
}*/

/*1011個位數統計
#include<stdio.h>
int main() {
	long int n;
	scanf_s("%d", &n);
	int Rnum = 0;
	int a[10] = { 0,0,0,0,0,0,0,0,0,0 };
	int i;//陣列下標
	while (n != 0) {
		Rnum = n % 10;
		n = n / 10;
		switch(Rnum) {
		case 0:
			a[0]++;
			break;
		case 1:
			a[1]++;
			break;
		case 2:
			a[2]++;
			break;
		case 3:
			a[3]++;
			break;
		case 4:
			a[4]++;
			break;
		case 5:
			a[5]++;
			break;
		case 6:
			a[6]++;
			break;
		case 7:
			a[7]++;
			break;
		case 8:
			a[8]++;
			break;
		case 9:
			a[9]++;
			break;
		default:;
		}
	}
	for (i = 0; i<10; i++) {
		if(a[i]!=0){
			printf("%d:%d\n", i, a[i]);
		}
	}
	return 0;
}//520行代碼 愛你哦*/

/* 1012跟奧巴馬一起編程

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main()
{
	int num, row;
	char a;
	scanf("%d %c", &num, &a);
	if (num % 2 == 1)
	{
		row = (num + 1) / 2;
		for (int i = 0; i < num; i++)
		{
			printf("%c", a);
		}
		printf("\n");
		for (int i = 0; i < row - 2; i++)
		{
			printf("%c", a);
			for (int i = 0; i < num - 2; i++)
			{
				printf(" ");
			}
			printf("%c\n", a);
		}
		for (int i = 0; i < num; i++)
		{
			printf("%c", a);
		}
		printf("\n");

	}
	else
	{
		row = num / 2;
		for (int i = 0; i < num; i++)
		{
			printf("%c", a);
		}
		printf("\n");
		for (int i = 0; i < row - 2; i++)
		{
			printf("%c", a);
			for (int i = 0; i < num - 2; i++)
			{
				printf(" ");
			}
			printf("%c\n", a);
		}
		for (int i = 0; i < num; i++)
		{
			printf("%c", a);
		}
		printf("\n");
	}
}
*/
/*1013 查驗身份證
#include<stdio.h>
int main() {
	int N;
	scanf("%d", N);
	int num[N][18];
	int i;int j;int m;int n;
	int Haven=0;
	int p;
	char Cmp[11] = { 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 };
	int tar[] = { 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 };
	for (j = 0; j < N; j++) {
		for (i = 0; i < 18; i++) {
			scanf("%d", &num[i]);
			for (m = 0; m < 18; m++) {
				n = 0;
				Haven = Haven + num[m] * tar[n];
				n++;
			}
			Haven = Haven % 11;//求出的權值
			if (Haven == Cmp[Haven]) {
				p++;//一個身份證核實正確
			}
		}//錄入身份資訊
	}
	if (p == N) {
		printf("All passed");
	}
else {
for (i = 0; i < N; i++) {
	for (j = 0; j < 18; j++) {
		printf("%d",num[j]);
	}
	}
	}
	return 0;
}
*/

/*1014快速排序
#include <stdio.h>
int cmp(const void* a, const void* b) {
	return *(int*)a - *(int*)b;
}
int main() {
	int n, max = 0, c = 0, i;
	scanf("%d", &n);
	int a[n], b[n], cn[n];
	for (i = 0; i < n; i++) {
		scanf("%d", &a[i]);
		cn[i] = a[i];
	}
	qsort(cn, n, sizeof(cn[0]), cmp);
	for (i = 0; i < n; i++) {
		if (a[i] > max)	max = a[i];
		if (max == a[i] && a[i] == cn[i])	b[c++] = cn[i];
	}
	printf("%d\n", c);
	for (i = 0; i < c; i++) {
		printf("%d", b[i]);
		if (i != c - 1)	printf(" ");
	}
	if (c == 0)	printf("\n");
	return 0;
}
*/

/*1015劃拳
#include<stdio.h>
int main() {
	int n;
	int Clon = 0;
	scanf("%d", &n);
	Clon = n;
	int a[n][4];
	int i, j;
	int CupJia = 0; int CupYi = 0;//記錄杯數
	for (i = 0; i < Clon; i++) {
		for (j = 0; j < 4; j++);
	}//記錄劃拳資料
	for (i = 0; i < Clon; i++) {
		if (a[i][0] + a[i][2] == a[i][1] && a[i][1] == a[i][3]) {
			CupYi++;
		}
		else if (a[i][0] + a[i][2] == a[i][3] && a[i][1] != a[i][3]) {
			CupJia++;
		}
		else if (a[i][0] + a[i][2] == a[i][3] && a[i][3] != a[i][1]) {
			;
		}
		else { ; }
	}
	printf("%d %d", CupJia, CupYi);
	return 0;
}
*/

/*1016 統計同成績學生 (20 分)
#include<stdio.h>
int main() {
	int N;
	int TarScore;
	scanf("%d", &N);
	int Score[N];
	int i; int j;
	for (i = 0; i < N; i++) {
		scanf("%d", &Score[i]);
	}//成績表的輸入
	int TarNum = 0;
	scanf("%d", &TarNum);//讀入目標成績數量
	int Po[TarNum];//記錄每個成績的數量的陣列
	for (i = 0; i < TarNum; i++) {
		scanf("%d", &TarScore);//讀入目標成績
		for (j = 0; j < N; j++) {
			if (Score[j] == TarScore) {
				Po[i]++;
			}
		}
		for (i = 0; i < TarNum; i++) {
			printf("%d", Po[i]);
		}
	}
	return 0;
}
#include"stdio.h"
int main(){
	int n,m,a[101]={0},num;
	int i;
	scanf("%d",&m);
	for(i=0;i<m;i++){
		scanf("%d",&num);
		a[num]++;
	}
	scanf("%d",&n);
	for(i=0;i<n;i++){
		scanf("%d",&num);
		if(i!=0)
			printf(" ");
		printf("%d",a[num]);
	}
	return 0;
}

*/
/*1017判斷題
#include<stdio.h>
int main() {
	int M; int N;//N為學生總數,M為判斷題數量;
	scanf("%d %d", &M, &N);
	int Haven[N];
	int TA[M];
	int i; int j;
	int Score[N]; int TtalScore = 0;
	for (i = 0; i < M; i++) {
		scanf("%d", &Haven[i]);
	}//權重陣列
	for (i = 0; i < M; i++) {
		scanf("%d", &TA[i]);
	}//正確答案陣列
	int SA[N][M];
	for (j = 0; j < N; j++) {
		for (i = 0; i < M; i++) {
			scanf("%d", &SA[j][i]);
		}
	}//錄入學生答案
	for (i = 0; i < N; i++) {
		for (j = 0; j < M; j++) {
			if (SA[i][j] == TA[j]) {
				TtalScore = TtalScore + Haven[j];
				Score[i] = TtalScore;//第i個學生的成績
			}
		}
	}
	for (i = 0; i < N; i++) {
		printf("%d\n", Score[i]);
	}
	return 0;
}*/
/*1018 考試座位號 (15 分)
#define maxn 1010
struct student {
	long long id;//準考證號
	int examSeat;//考試座位號
}testSeat[maxn];//試機座位號作為下標來記錄考生
int main() {
	int N;
	int n, m, seat, examSeat;
	long long id;
	scanf("%d", &N);
	for (int i = 0; i < N; i++) {
		scanf("%lld %d %d", &id, &seat, &examSeat);//準考證號、試機座位號、考試座位號
		testSeat[seat].id = id;
		testSeat[seat].examSeat = examSeat;
	}
	scanf("%d", &m);//查詢個數
	for (int i = 0; i < m; i++) {
		scanf("%d", &seat);
		printf("%lld %d\n", testSeat[seat].id, testSeat[seat].examSeat);
	}
	return 0;
}*/
/*影像過濾#include<stdio.h>
int main() {
	int M; int N;// 像素
	int A; int B;//待過濾灰度值
	int target;//目標值
	int i, j;//指標下標
	scanf("%d %d", &M, &N);
	scanf("%d %d", &A, &B);
	scanf("%d", &target);
	int Pic[10][10];
	for (i = 0; i < M; i++) {
		for (j = 0; j < N; j++) {
			scanf("%d", &Pic[i][j]);
			if (Pic[i][j] >= A && Pic[i][j] <= B) {
				Pic[i][j] = 0;
			}
		}
	}
	for (i = 0; i < M; i++) {
		for (j = 0; j < N; j++) {
			if (j != N - 1) {
				if (Pic[i][j] < 10) {
					printf("00%d ", Pic[i][j]);
				}
				else if (Pic[i][j] < 100 && Pic[i][j] >= 10) {
					printf("0%d ", Pic[i][j]);
				}
				else {
					printf("%d ", Pic[i][j]);
				}
			}
			else {
				if (Pic[i][j] < 10) {
					printf("00%d", Pic[i][j]);
				}
				else if (Pic[i][j] < 100 && Pic[i][j] >= 10) {
					printf("0%d", Pic[i][j]);
				}
				else {
					printf("%d", Pic[i][j]);
				}
			}
		}
		printf("\n");
	}
	return 0;
}*/
/*1020 組合數的和 (15 分)#include<stdio.h>
int main() {
	int N;
	scanf("%d", &N);
	int Num[N];
	int i; int j;
	int AdTion = 0;
	for (i = 0; i < N; i++) {
		scanf("%d", &Num[i]);
	}//組合數陣列
	for (i = 0; i < N; i++) {
		for (j = N-1; j >-1; i++) {
			AdTion = Num[i] * 10 + Num[j] + Num[j] * 10 + Num[i];
		}
	}
	printf("%d", AdTion);
	return 0;
}*/

/*1021 N - 自守數(15 分)
#include <stdio.h>
#include <math.h>

int main()
{
	int M, chengshu, ji, length, last, flag = 0;
	int arr[20];
	scanf("%d", &M);
	for (int i = 0; i < M; i++)
	{
		scanf("%d", &arr[i]);
	}
	for (int j = 0; j < M; j++)
	{
		chengshu = 1;
		length = 0;
		int tmp = arr[j];
		while (tmp > 0)
		{
			tmp /= 10;
			length++;
		}
		while (chengshu < 10)
		{
			int k = 0;
			last = 0;
			ji = chengshu * arr[j] * arr[j];
			int t = ji;
			while (k < length)
			{
				last += pow(10, k) * (t % 10);
				t /= 10;
				k++;
			}
			if (last == arr[j])
			{
				printf("%d %d\n", chengshu, ji);
				flag = 1;
				break;
			}
			flag = 0;
			chengshu++;
		}
		if (flag == 0)
		{
			printf("No\n");
		}
	}
	return 0;
}*/

/*1022反轉鏈表
#include <stdio.h>
typedef struct {
	int address;//節點地址
	int data; //整數資料
	int next;//下一節點的地址
} Node;
int main() {
	int addr, N, K;//讀取首地址,節點數量,反轉個數
	scanf("%d %d %d", &addr, &N, &K);
	Node origin[100001], sort[100001];//創建初始單鏈表,反轉后的單鏈表
	for (int i = 0; i < N; i++) {//讀取節點
		Node temp;
		scanf("%d %d %d", &temp.address, &temp.data, &temp.next);
		origin[temp.address] = temp;
	}
	for (int i = 0; i < N; i++) {//鏈接節點
		sort[i] = origin[addr];
		addr = sort[i].next;//獲取下一個節點的地址
		if (addr == -1) {
			N = i + 1;//可能有無效的節點,需要更新鏈表中節點的數量
			break;
		}
	}
	for (int i = 0; i < N / K; i++) {//反轉的次數
		for (int j = 0; j < K / 2; j++) {//反轉
			Node temp;
			temp = sort[j + i * K];
			sort[j + i * K] = sort[K - 1 - j + i * K];//陣列下標確認好
			sort[K - 1 - j + i * K] = temp;
		}
	}
	for (int i = 0; i < N; i++) {
		if (i != N - 1) {
			sort[i].next = sort[i + 1].address;
			printf("%05d %d %05d\n", sort[i].address, sort[i].data, sort[i].next);
		}
		else {
			sort[i].next = -1;
			printf("%05d %d %d\n", sort[i].address, sort[i].data, sort[i].next);
		}
	}
	return 0;
}
*/
/*1023wifi密碼
#include<stdio.h>
int main()
{
	int n, i, j;
	char a, b, c;
	scanf("%d", &n);
	getchar();
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < 4; j++)
		{
			a = getchar();
			getchar();//-
			b = getchar();
			getchar();//空格or回車
			if (b == 'T')c = a;
		}
		printf("%d", c - 64);
	}
	printf("\n");
	return 0;
}*/
/*1024就不告訴你
#include<stdio.h>
int main() {
	int m, n;
	scanf("%d%d", &m, &n);
	int tar = m * n;
	while(tar!=0){
		tar = tar % 10;
		printf("%d", tar );
	}
	return 0;
}*/
/*1025有多少個不同的值
#include<stdio.h>
int main() {
	int N;
	scanf("%d", &N);
	int i, j;
	int n[N];
	int n;
	int num = 0;
	n[0] = 0;
	for (i = 1; i < N; i++) {
		n = i / 2 + i / 3 + i / 5;
		if (n[num] != n) {
			n[num] = n;
			num++;
		}
	}
	printf("%d", num);
	return 0;
}
*/
/*1026 組個最小數 (20 分)*/
#include <stdio.h>
int main() {
	int n[10] = { 0 }, i;
	for (i = 0; i < 10; i++) {//回圈輸入 
		scanf("%d", &n[i]);
	}//對0的位數進行處理,如果有0,將后面個數不為0的數輸出一個,并且該數個數減一
	for (i = 1; i < 10; i++) {
		if (n[i] != 0) break;
	}
	printf("%d", i);//輸出第一位數
	n[i]--;
	for (i = 0; i < 10; i++) {//計算剩余位,直接輸出
		while (n[i] != 0) {
			printf("%d", i);
			n[i]--;
		}
	}
	return  0;
}

/*1027人口普查
#include<stdio.h>
#include<string.h>
int main(){
	int n,count=0,i;
	scanf("%d",&n);//讀入總數
	int day,month,year;
	char name[6],maxname[6],minname[6];//名字用字符陣列存
	long long maxage=20140906,minage=18140906;//不超兩百年
	for(i=0;i<n;i++){
		scanf("%s %d/%d/%d",&name,&year,&month,&day);
		long long birth=year*10000+month*100+day;//long long 型
		if(birth<18140906 || birth>20140906);
		else{//得到最年長和最年輕的人
			count++;//記錄有效生日的個數
			if(birth < maxage){//找出最小的,最小的數即年齡最大的
				strcpy(maxname,name);//strcpy函式,后面的存到前面的,name存到max_name
				maxage=birth;
			}
			if(birth > minage){//得到最年輕
				strcpy(minname,name);
				minage=birth;
			}
		}
	}
	if(count){//只要不為0,就相當于真
		printf("%d %s %s\n",count,maxname,minname);
	}else{
		printf("0\n");//這個點容易漏,即輸入的都是不合理的資料
	}
	return 0;
}*/

/*1028 數字加密 (20 分
#include<stdio.h>
#include<string.h>
char A[105],B[105],word[3]={'J','Q','K'};
void reverse(char x[],int len){
int i,j;
char ch;
for(i=0,j=len-1;i<j;i++,j--){
ch=x[i];
x[i]=x[j];
x[j]=ch;
}
}
int main(){
int len1,len2,i,t1;
scanf("%s%s",A,B);
len1=strlen(A);
reverse(A,len1);
len2=strlen(B);
reverse(B,len2);
if(len1>len2){
for(i=len2;i<len1;i++){
B[i]='0';
}
len2=len1;
}
for(i=0;i<len1&&i<len2;i++){
if(i%2==0){
t1=((B[i]-'0')+(A[i]-'0'))%13;
}else{
t1=B[i]-A[i];
if(t1<0)
t1+=10;
}
if(t1>=10){
B[i]=word[t1-10];
}else{
B[i]=t1+'0';
}
}
reverse(B,len2);
printf("%s",B);
return 0;
}
*/
/*1029復數乘法
#include <stdio.h>
#include <math.h>
int main() {
	double r1, p1, r2, p2;
	double a, b;
	scanf("%lf %lf %lf %lf", &r1, &p1, &r2, &p2);
	a = r1 * r2 * cos(p1 + p2);
	b = r1 * r2 * sin(p1 + p2);
	if (fabs(a) < 0.01) a = 0;
	if (fabs(b) < 0.01) b = 0;
	printf("%.2lf%+.2lfi", a, b);
	return 0;
}*/

/*1030 數素數 (20 分)
#include<stdio.h>
#include<math.h>

int issushu(int x)
{
	for (int i = 2; i <=sqrt(x); i++)
	{
		if (x % i == 0)return 0;
	}
	return 1;
}                                                    //判斷一個數是否是素數
int main()
{
	int m = 0, n = 0, j = 0, k = 0;
	int a[10001];                                 //用來放素數
	scanf("%d %d", &m, &n);
	for (int i = 2; j <= n; i++)
	{
		if (issushu(i))
		{
			a[++j] = i;
		}
	}                                            // 一個一個判斷是否是素數,若是放進陣列,直到陣列中素數個數達到N
	for (int i = m; i <= n; i++)
	{
		printf("%d", a[i]);
		if (++k % 10 != 0&&i!=n)printf(" ");
		else printf("\n");
	}                                           // 從第M個素數開始按格式輸出
}*/
/*1031 狼人殺 - 簡單版(20 分)
#include <stdio.h>
#include <stdlib.h>
int main() {
	int N, i, j, k;
	scanf("%d", &N);
	int state[N + 1], identity[N + 1], Lier[N + 1], nLier;
	for (i = 1; i <= N; i++) {
		scanf("%d", &state[i]);
	}
	for (i = 1; i < N; i++) {
		for (j = i + 1; j <= N; j++) {
			for (k = 1; k <= N; k++) identity[k] = Lier[k] = 0;
			identity[i] = identity[j] = 1, nLier = 0;
			for (k = 1; k <= N && nLier <= 2; k++)
				if (identity[abs(state[k])] != (state[k] < 0))
					Lier[nLier++] = k;
			if (nLier == 2 && identity[Lier[0]] + identity[Lier[1]] == 1) {
				printf("%d %d", i, j);
				return 0;
			}
		}
	}
	printf("No Solution");
}*/
/*1032求平均值
#include <iostream>
#include <cstdio>
#include <string.h>
using namespace std;
int main() {
	int n, cnt = 0;
	char a[50], b[50];
	double temp = 0.0, sum = 0.0;
	cin >> n;
	for(int i = 0; i < n; i++) {
		scanf("%s", a);
		sscanf(a, "%lf", &temp);
		sprintf(b, "%.2f",temp);
		int flag = 0;
		for(int j = 0; j < strlen(a); j++)
			if(a[j] != b[j]) flag = 1;
		if(flag || temp < -1000 || temp > 1000) {
			printf("ERROR: %s is not a legal number\n", a);
			continue;
		} else {
			sum += temp;
			cnt++;
		}
	}
	if(cnt == 1)
		printf("The average of 1 number is %.2f", sum);
	else if(cnt > 1)
		printf("The average of %d numbers is %.2f", cnt, sum / cnt);
	else
		printf("The average of 0 numbers is Undefined");
	return 0;
}*/

/*1033朋友數
#include <stdio.h>
int main(){
	int n,i,sum,count,m;
	scanf("%d",&n);
	int num[37]={0};
	for(i=0;i<n;i++){
		scanf("%d",&m);
		for(sum=0;m;m=m/10){
			sum += m % 10;
		}
		if(!num[sum]){
			num[sum]=1,count++;
		}
	}
	printf("%d\n",count);
	for(i=1;i<37;i++){
		if(num[i]){
			printf("%d%c",i,--count?' ':'\0');
		}
	}
	return 0;
}
*/

/*1034是否存在相等的差
#include <stdio.h>
int main() {
	int i, n, num, arr[10000] = { 0 };
	scanf("%d", &n);
	for (i = 0; i < n; i++) {
		scanf("%d", &num);
		arr[(num > i + 1) ? (num - i - 1) : (i + 1 - num)]++;
	}
	for (i = n - 1; i >= 0; i--) {//從大到小輸出重復的差值及其重復的次數
		if (arr[i] >= 2) {
			printf("%d %d\n", i, arr[i]);
		}
	}
	return 0;
}
*/

/*1035列印沙漏
#include <stdio.h>
#include <math.h>//呼叫sqrt()函式的頭檔案
int main(){
	int n,i,j;
	char c;
	scanf("%d %c",&n,&c);//讀入數和字符
	int chu=(int)sqrt(2.0*(n+1))-1;//最多的一行的個數,sqrt()計算一個非負實數的平方根
	if(chu%2==0) chu--;//保證每行輸出奇數個
	int sum=(chu+1)*(chu+1)/2-1;//所需總數
	for(i=chu;i>=1;i=i-2){//輸出上面的部分
		for(j=0;j<(chu-i)/2;j++){
			printf(" ");
		}
		for(j=0;j<i;j++){
			printf("%c",c);
		}
		printf("\n");
	}
	for(i=3;i<=chu;i=i+2){//輸出下面的部分
		for(j=0;j<(chu-i)/2;j++){
			printf(" ");
		}
		for(j=0;j<i;j++){
			printf("%c",c);
		}
		printf("\n");
	}
	printf("%d\n",n-sum);//輸出多余的符號數
	return 0;
} */

/*1036說反話
#include <stdio.h>
#include <stdlib.h>
int main()
{
	char a[81][81] = { '\0' };
	int i = 0, j;
	do
	{
		scanf("%s", a[i]);
		i++;
	} while (getchar() != '\n');
	for (j = i - 1; j > 0; j--)
	{
		printf("%s ", a[j]);
	}
	printf("%s\n", a[j]);
	return 0;
}*/

/*1037數字黑洞
#include <stdio.h>

int cap(const void *a, const void *b){
	return *(int*)b - *(int*)a;
}

int stor(int n){
	int zoo[4] = {n/1000, n%1000/100, n%100/10, n%10};
	qsort(zoo, 4, sizeof(int), cap);
	return zoo[0] * 1000 + zoo[1] * 100 + zoo[2] * 10 + zoo[3];
}

int rever(int n){
	return n/1000 + n%1000/100 * 10 + n%100/10 * 100 + n%10 * 1000;
}

int main(){
	int n;
	scanf("%d", &n);
	do{
		n = stor(n);
		printf("%04d - %04d = %04d\n", n, rever(n), n - rever(n));
		n = n - rever(n);
	}while(n != 0 && n != 6174) ;
	return 0;
}*/

//1038數列的片段和 (20 分)
/*//1049
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<stdlib.h>
using namespace std;


int main()
{
	long n;//題中說10的5次方,所以int是不夠用的,這就是測驗點23的錯誤原因
	cin >> n;
	int times = n;
	double result = 0, temp;
	for (long i = 0; i < n; i++)
	{
		cin >> temp;
		result += times *(n+1-times)* temp;
		times--;
	}
	printf("%.2f", result);



	system("pause");
	return 0;
}
*/

/*1039程式運行時間
#include <stdio.h>
int main(){
	int c1,c2,sum;
	scanf("%d %d",&c1,&c2);
	int hh,mm,ss;
	sum=(c2-c1+50)/100;
	ss=sum%60;
	mm=sum%3600/60;
	hh=sum/3600;
	printf("%02d:%02d:%02d",hh,mm,ss);
	return 0;
}*/
//1040插入與歸并
#include <stdio.h>
#include <stdlib.h>

int comp(const void* a, const void* b)
{
	return *(int*)a - *(int*)b;
}

int main()
{
	int N, origin[100], halfsort[100], i, j, length;
	scanf("%d", &N);
	for (int i = 0; i < N; i++) scanf("%d", origin + i);
	for (int i = 0; i < N; i++) scanf("%d", halfsort + i);

	/* if it is insertion sort, return sorted length if yes, zero otherwise */
	for (i = 0; i < N - 1 && halfsort[i] <= halfsort[i + 1]; i++);
	for (length = ++i; i < N && halfsort[i] == origin[i]; i++);
	length = i == N ? length + 1 : 0;

	if (length)                  /* insertion sort */
	{
		puts("Insertion Sort");
		qsort(origin, length, sizeof(int), comp);
	}
	else                        /* merge sort, operate on the original array */
	{
		puts("Merge Sort");
		for (length = 1, i = 0; i < N && length <= N; length *= 2)
		{
			/* i == N means identical, also breaks the outer 'for' loop */
			for (i = 0; i < N && origin[i] == halfsort[i]; i++);
			for (j = 0; j < N / length; j++)
				qsort(origin + j * length, length, sizeof(int), comp);
			qsort(origin + j * length, N % length, sizeof(int), comp);
		}
	}

	for (int i = 0; i < N; i++)
		printf("%d%c", origin[i], i == N - 1 ? '\n' : ' ');

	return 0;
}
//over good night

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/353461.html

標籤:其他

上一篇:我用Python抓取了【S11全球總決賽】直播評論,EDG nb

下一篇:5個Python小游戲+原始碼,本來要幫我侄孫戒手游癮的,結果我和他玩瘋了

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more