#define _CRT_SECURE_NO_WARNINGS 1
//hdoj1013
#include<iostream>
#include<cstring>
using namespace std;
int main() {
char s[1000];//大数转化成字符串求解
int sum, i, a;
while (cin >> s) {
if (strcmp(s, "0") == 0)//s[0]=='0'
break;
sum = 0;
for (i = 0; i < strlen(s); i++)
sum += s[i] - '0';
while (sum > 9) {//还要在判断一下a即sum是否大于9
a = 0;
while (sum) {
a += sum % 10;//模10除10常规操作
sum /= 10;
}
sum = a;
}
cout << sum << endl;
}
}
//hdoj 1018求n!的位数
//暴力一定会wa,数据太大
#include<iostream>
#include<cmath>
using namespace std;
int main() {
int n, i, N;
while (cin >> N) {
while (N--) {
cin >> n;
double sum = 0;
for (i = 1; i <= n; i++)
sum += log10(i);//log10(n!)=求n!的位数
cout << int(sum) + 1 << endl;
}
}
}
//方法二-斯特林公式
#include<iostream>
#include<cmath>
using namespace std;
#define pi 3.14159
#define e exp(1)
int main() {
int n, N;
while (cin >> N) {
while (N--) {
cin >> n;
double sum = 0;
if (n != 0)
sum = log10(2 * pi * n) / 2 + n * (log10(n / e));
cout << (int)sum + 1 << endl;
}
}
}
HDOJ 1013数根 HDOJ 1018n的阶层的位数
最新推荐文章于 2024-07-14 15:36:20 发布