1 条题解

  • 0
    @ 2025-7-19 23:16:36

    直接高精度模拟即可。

    以下代码来自

    #include<bits/stdc++.h>
    using namespace std;
    char s[610];
    int point=-1;
    int Cnt=0;
    namespace mysqrt
    {
    	char jg[610]={'0'};
    	int cnt=0;
    	int l=0;
    	int work(int o,char *O,int I)
    	{
    	    char c,*D=O;
    	    if(o>0)
    	        for(l=0;D[l];D[l++]-=10)
    	        {
    	            D[l++]-=120;
    	            D[l]-=110;
    	            while(!work(0,O,l))
    	                D[l]+=20;
    	            jg[++cnt]=(D[l]+1032)/20;
    	        }
    	    else
    	    {
    	        c=o+(D[I]+82)%10-(I>l/2)*(D[I-l+I]+72)/10-9;
    	        D[I]+=I<0 ? 0 : !(o=work(c/10,O,I-1))*((c+999)%10-(D[I]+92)%10);
    	    }
    	    return o;
    	}
    	char* bigsqrt(char *S,int k)
    	{
    		char *ss=S;
    		memset(jg,'\0',sizeof(jg));
    		jg[0]='0';
    		cnt=0;
    		int CNT=Cnt;
    		for(;Cnt<CNT+2*k;) ss[++Cnt]='0';
    		if(strlen(ss)&1)
    	        work(2,ss+1,0);
    	    else
    	        work(2,ss,0);
    	    point=cnt-k;
    	    for(int i=1;i<=point;i++) jg[i]='0';
    	    return jg;
    	}
    }
    using namespace mysqrt;
    int n,k;
    char x;
    char *s1;
    int ans1,ans2;
    int main()
    {
    	cin>>n>>k>>x;
    	for(int i=2;i<=k;i++)
    	{
    	    int tmp=sqrt(i);
    	   // if(tmp*tmp==i) continue;
    		memset(s,'\0',sizeof(s));
    		s[0]='0';
    		cnt=Cnt=0;
    		point=-1;
        	snprintf(s,sizeof(s),"%d",i);
        	s[strlen(s)]='0';
        	Cnt=strlen(s)-1;
        	for(int i=strlen(s)-1;i>0;i--) swap(s[i],s[i-1]);
        	s1=bigsqrt(s,n+1);
        	int tmm=strlen(s1)-1;
        	while(s1[tmm]>=53)
    		{
    			s1[tmm-1]++,s1[tmm]=48,--tmm;
    			if(s1[tmm]!=':') break;
    		}
    		
        	s1[strlen(s1)-1]='\0';
        	for(int j=point+1;j<strlen(s1);j++)
        	{
        		if(s1[j]==x) ans1++;
        		ans2+=s1[j]-48;
        	}
    	}
    	cout<<ans1<<endl<<ans2;
        return 0;
    }
    
    • 1

    信息

    ID
    65
    时间
    3000ms
    内存
    256MiB
    难度
    4
    标签
    递交数
    6
    已通过
    3
    上传者