[PS]白駿7894号ビッグ数字

4399 ワード

質問する


多くのアプリケーションでは、非常に多くのアプリケーションが使用されています.これらのアプリケーションは、鍵として数値を使用してデータの安全な転送と暗号化を行います.
個数が与えられた場合、その数のファクトリビット数を計算するプログラムが作成されます.

入力


最初の行は、テスト・インスタンスの数を示します.次の行から、行ごとに整数mが1つずつ始まります.(1 ≤ m ≤ 107)

しゅつりょく


1行目から順にN行ごとにシリアル番号ソートの結果が出力されます.

プール(C++コード)


ログの乗算法則を利用します.=>log(AB)=logA+logB
#include<iostream>
#include <cmath>
using namespace std;
int solution(int n) {
	double ret=log10l(n);
	for (int i = n-1; i >= 1; i--) {
		ret += log10l(i);
	}
	return (int)ret+1;
}
int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	int n;
	cin >> n;
	for (int i = 0; i < n; i++) {
		int m;
		cin >> m;
		int ret= solution(m);
		cout << ret << endl;
	}
	return 0;
}