求助ARC B
  • 板块学术版
  • 楼主lpstudio
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/10/15 22:09
  • 上次更新2023/11/2 13:31:56
查看原帖
求助ARC B
530991
lpstudio楼主2023/10/15 22:09
#include<bits/stdc++.h>
using namespace std;
__int128 a,b,sum,mod=998244353,inv=499122177; 
__int128 ans;
inline __int128 read()
{
	__int128 w=0;
	int f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9')
	{
		if(ch=='-')
		f=-1;
	}
	while(ch<='9'&&ch>='0')
	{
		w=w*10+ch-'0';
		ch=getchar();
	}
	return f*w;
}
void print(__int128 x)
{
	if(x<0)
	cout<<"-";
	if(x>9)print(x/10);
	putchar(x%10+'0');
}
vector<__int128>v,t;
int main()
{
	a=read();
	b=read();
	ans=b%mod;
	if(b==0)
	{
		cout<<0;
		return 0;
	}
	__int128 k=a;
	for(__int128 i=2;i*i<=a;i++)
	{
		if(k%i==0)
		{
			v.push_back(i);
			t.push_back(0);
			sum++;
			while(k%i==0)
			{
				k/=i;
				t[sum-1]++;
			}
		}
	}
	if(k>1)
	{
		sum++;
		v.push_back(k);
		t.push_back(1);
	}
	for(__int128 i=0;i<sum;i++)
	{
		ans*=(t[i]*b+1);
		ans%=mod;
	}
	ans*=inv;
	ans%=mod;
	print(ans); 
	return 0;
}

AC 46个点,WA 21个

2023/10/15 22:09
加载中...