为什么我下载了10,和,500,这两个数据都对了,但是评测九个RE
  • 板块P1255 数楼梯
  • 楼主reeceli
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/12/16 17:32
  • 上次更新2023/12/16 20:04:55
查看原帖
为什么我下载了10,和,500,这两个数据都对了,但是评测九个RE
1193110
reeceli楼主2023/12/16 17:32
# include <stdio.h>
# include<stdlib.h>
# include <string.h>
# include<math.h>
#include<stdlib.h>
#include<stdio.h>

const char* plus(char arr[], char brr[]) {
	long long  crr[1000000];
	long long  drr[1000000];
	long long  err[1000000];
	char grr[1000000] = "0";
	int  sz = strlen(arr);
	int  sz2 = strlen(brr);
	for (int i = 0; i < sz; i++) {
		crr[i] = arr[sz - i - 1] - 48;
	}
	/*printf("%d", crr[0]);*/
	for (int i = 0; i < sz2; i++) {
		drr[i] = brr[sz2 - i - 1] - 48;
	}
	/*printf("%d", drr[0]);*/
	int min = 0;
	int max;
	if (sz < sz2)
		min = sz;
	else
		min = sz2;
	for (int i = 0; i < min; i++) {
		err[i] = crr[i] + drr[i];
	}
	/*printf("%d", err[0]);*/
	if (min == sz) {
		for (int i = min; i < sz2; i++)
			err[i] = drr[i];
		max = sz2;
	}
	else {
		for (int i = min; i < sz; i++) {
			err[i] = crr[i];
			max = sz;
		}
	}
	for (int i = 0; i < max - 1; i++) {
		if (err[i] > 9) {
			err[i + 1] += err[i] / 10;
			err[i] = err[i] % 10;
		}
	}
	/*printf("%d", err[0]);*/
	if (err[max - 1] > 9) {
		err[max] = err[max - 1] / 10;
		err[max - 1] = err[max - 1] % 10;
		for (int i = 0; i <= max; i++)
			grr[i] = err[max - i] + 48;
	/*	printf("%s", grr);*/
		return grr;
	}
	for (int i = 0; i < max; i++)
		grr[i] = err[max - i - 1] + 48;
	/*printf("%s", grr);*/
	return grr;
}

int main() {
	int n;
	scanf("%d", &n);
	char arr[1000000] = "1";
	char brr[1000000] = "2";
	/*printf("%d", strlen(arr));
	printf("%d", strlen(brr));*/

	char crr[1000000] = "0";
	for (int i = 2; i < n; i++) {
		strcpy(crr, plus(arr, brr));
		strcpy(arr, brr);
		strcpy(brr, crr);
	}
	printf("%s", brr);
	return 0;
}
2023/12/16 17:32
加载中...