关于log10
  • 板块学术版
  • 楼主ShanQing
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/6/8 22:00
  • 上次更新2024/6/9 09:08:41
查看原帖
关于log10
368204
ShanQing楼主2024/6/8 22:00

刚刚的D题。

WA1个。

//writer:Oier_szc

#include <bits/stdc++.h>
//#include <windows.h>
#define ED cerr<<endl;
#define TS cerr<<"I AK IOI"<<endl;
#define cr(x) cerr<<x<<endl;
#define cr2(x,y) cerr<<x<<" "<<y<<endl;
#define cr3(x,y,z) cerr<<x<<" "<<y<<" "<<z<<endl;
#define cr4(x,y,z,w) cerr<<x<<" "<<y<<" "<<z<<" "<<w<<endl;
#define pii pair<int,int>
#define fi first
#define se second
#define int long long
//#define uint unsigned long long
using namespace std;
const int N=5e3+5,INF=2e9,mod=998244353;
int n;
int f[65];
int qpow(int a,int b) {
	int res=1ll;
	//a%=mod;
	while(b) {
		if(b&1ll) res=res*a%mod;
		a=a*a%mod;
		b>>=1ll;
	}
	//cr(res)
	return res;
}
signed main()
{
	scanf("%lld",&n);
	int Log=(int)log10(n)+1,ans=0,pos=0;
	int b=qpow(10,Log),c=n%mod;
	ans=(1-qpow(b,n)+mod)*qpow(1-b+mod,mod-2)%mod;
	//cr((1-qpow(qwq,n)+mod))
	printf("%lld\n",ans*c%mod);
	return 0;
}
//11

AC:

//writer:Oier_szc

#include <bits/stdc++.h>
//#include <windows.h>
#define ED cerr<<endl;
#define TS cerr<<"I AK IOI"<<endl;
#define cr(x) cerr<<x<<endl;
#define cr2(x,y) cerr<<x<<" "<<y<<endl;
#define cr3(x,y,z) cerr<<x<<" "<<y<<" "<<z<<endl;
#define cr4(x,y,z,w) cerr<<x<<" "<<y<<" "<<z<<" "<<w<<endl;
#define pii pair<int,int>
#define fi first
#define se second
#define int long long
//#define uint unsigned long long
using namespace std;
const int N=5e3+5,INF=2e9,mod=998244353;
int n;
int f[65];
int qpow(int a,int b) {
	int res=1ll;
	while(b) {
		if(b&1ll) res=res*a%mod;
		a=a*a%mod;
		b>>=1ll;
	}
	return res;
}
signed main()
{
	scanf("%lld",&n);
	int Log=0,x=n;
	while(x) {
		x/=10;
		++Log;
	}
	int ans=0,pos=0;
	int b=qpow(10,Log),c=n%mod;
	ans=(1-qpow(b,n)+mod)*qpow(1-b+mod,mod-2)%mod;
	printf("%lld\n",ans*c%mod);
	return 0;
}

可以发现的是将log10改掉就过了。

是否是精度误差还是其它原因。

这可能是一个不太聪明的问题,轻喷。

2024/6/8 22:00
加载中...