拆分时间

Welcome to niuzeyu'c blog! / 2023-08-07 / 原文

#include <bits/stdc++.h>
using namespace std;
const double m = 1e-8;
string s;
double ans;

int main() {
	printf("请输入你想要设置的密码: ");
	cin >> s;
	for (long long  i = 0; i < s.size(); i++) {
		if (isdigit(s[i]))
			ans = ans * 10 + 10 * m;
		else if (islower(s[i]))
			ans = ans * 36 + 36 * m;
		else if (isupper(s[i]))
			ans = ans * 72 + 72 * m;
		else
			ans = ans * 95 + 95 * m;
	}
	printf("您的密码被破解需要大约 %.8lf 秒\n", ans);
	if (ans <= 1e-4)
		printf("大约相当于 %.4lf 微秒", ans * 1e6);
	else if (ans <= 1)
		return 0;
	else if (ans <= 3600)
		printf("大约相当于 %.4lf 分钟", ans * (1 / 60.0000000));
	else if (ans <= 86400)
		printf("大约相当于 %.4lf 小时", ans * (1 / 360.0000000));
	else if (ans <= 86400 * 3)
		printf("大约相当于 %.4lf 天", ans * (1 / 86400.0000000));
	else if (ans <= 86400 * 360)
		printf("大约相当于 %.4lf 个月", ans * (1 / 86400.0000000 / 30.0000000));
	else if (ans <= 86400 * 36000)
		printf("大约相当于 %.4lf 年", ans * (1 / 86400.0000000 / 360.0000000));
	else
		printf("大约相当于 %.4lf 世纪", ans * (1 / 86400.0000000 / 3600.0000000));
}