为什么是TLE

P1590 失踪的7

你算一下,计算机一秒最多计算$10^9$次,你这程序跑满要$n*a*log10(a)$次,也就是$10000*4*10^9*9$,远超了吧
by Nopain @ 2021-06-06 08:35:05


@[落日斜阳](/user/376149) 道理是这个道理,但是它要怎么减少运算次数啊
by 小智张 @ 2021-06-06 09:03:15


提供一种方法 ``` #include<bits/stdc++.h> using namespace std; int T; char n[20]; long long ans; void solve() { ans=0; long long p=1ll; int len=strlen(n); for(int i=len-1;i>=0;--i) { long long x=n[i]-'0'; if(x>=7)--x; ans+=x*p; p=p*9ll; } } int main() { scanf("%d",&T); while(T--) { scanf("%s",n); solve(); printf("%lld\n",ans); } } ```
by zhangruozhong @ 2021-06-06 09:05:48


@[zhangruozhong](/user/492104) 实在感谢!!
by 小智张 @ 2021-06-06 09:08:55


|