C - Digits in Multiplication (atcoder.jp)
给定一个数n,将n拆成 n=a * b , 定义F(A,B) = A,B之中 位数的最大值
求这个F(A,B) ,满足A * B = n
#include <iostream> #include <vector> #include <bits/stdc++.h> #include <unordered_map> #include <unordered_set> #include <queue> #include <set> #include <stack> #include <algorithm> #define x first #define y second #define pb emplace_back #define fu(i,a,b) for(int i=a;i<=b; ++ i) #define fd(i,a,b) for(int i=a;i>=b; -- i) #define endl ' ' #define ms(x,y) memset(x,y,sizeof x) #define ios ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); using namespace std; typedef long long LL; typedef unsigned long long ULL; typedef vector<vector<LL>> VVL; typedef vector<vector<int>> VVI; typedef vector<LL> VL; typedef vector<bool> VB; typedef vector<int> VI; typedef vector<string> VS; typedef pair<int,int> PII; typedef vector<PII> VPII; typedef pair<PII,int> PIII; typedef pair<double,double> PDD; typedef pair<double,int> PDI; typedef pair<char,int> PCI; typedef pair<string,int> PSI; typedef pair<int,string> PIS; typedef pair<int,char> PIC; typedef pair<LL,LL> PLL; typedef __int128 i128; typedef unsigned long long ULL; const int N =100+ 10 ,M = N * 2 ,INF = 0x3f3f3f3f,P = 131; const double eps = 1e-8,DNF = 1e18; const int mod = 1e9 + 7 ,base= 20010; const LL LNF=(LL) INF * INF; void solve() { LL n;cin >> n; int ans= to_string(n).size(); fu(i,1,n/i) { if(n % i ) continue; LL t = n / i; int cnt = max(to_string(i).size(),to_string(t).size()); ans = min(ans,cnt) ; } cout << ans << endl; } signed main() { // freopen("1.txt","r",stdin); // #define int long long // init(N-1); ios // cout << fixed<<setprecision(2); int t=1; // cin>>t; int now = 1; while(t -- ) { // cout<<"Case "; // cout<<"Case #"; // cout<<"Scenario #"; // cout<< now ++ <<": "; // cout<< now ++ <<": "; solve(); } return 0; }