这俩有区别吗
查看原帖
这俩有区别吗
539066
Leo2011楼主2023/11/26 18:05

最开始写了个这:

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

ll n;
bool flag = false;

int main() {
	scanf("%lld", &n);
	for (ll i = 2; i * i <= n; i++) {
		if (n % i) continue;
		ll tmp = 0;
		while (!(n% i)) {
			n /= i;
			tmp++;
		}
		if (flag) printf(" * ");
        else
			flag = true;
		printf("%d", i);
		if (tmp > 1) printf("^%d", tmp);
	}
    if (n != 1) {
		if (flag) printf(" * ");
        printf("%d", n);
	}
	return 0;
}

70分记录

然而,把代码改成这样:

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

ll n;
bool flag = false;

int main() {
	scanf("%lld", &n);
	if (n < 2LL) {  // 没看清数据范围hhh,可忽略
		printf("%lld\n", n);
		return 0;
	}
	for (ll i = 2LL; i * i <= n; i++) {
		if (n % i) continue;
		ll tmp = 0LL;
		while (!(n % i)) {
			tmp++;
			n /= i;
		}
		if (flag)
			printf(" * ");
		else
			flag = true;
		printf("%lld", i);
		if (tmp > 1LL) printf("^%lld", tmp);
	}
	if (n != 1LL) {
		if (flag) printf(" * ");
		printf("%lld", n);
	}
	return 0;
}

竟然……AC了

求大佬解答原因QwQ

2023/11/26 18:05
加载中...