计算机小白进化版CM 2024-10-08 09:04 采纳率: 0%
浏览 56
已结题

洛谷B3828优秀正整数

洛谷B3828优秀正整数
现在是AC的正确答案

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main(int argc,char*argv[])
{
    long long int i,j,k,a,b,c,m,n,p=1,x,y,z,L,R,M,N,s;
    scanf("%lld %lld",&L,&R);
    for(i=sqrt(L);i<=sqrt(R);i++)
    {
        x=i*i;//先确定优秀正整数肯定能开平方
        if(x<L) continue;
        s=0;
        while(x>0)
        {
            s=s+(x%10);//s求个位数字之和
            x/=10;
        }
        for(j=2;j<=sqrt(s);j++)
        {
            if(s%j==0) break;
        }//判断s是不是质数
        if(j>sqrt(s))
        {  
            p=(p*((i*i)%998244353))%998244353;
        
        }
    }
    
    if(p==1) printf("0");
    else printf("%lld",p);
    return 0;
}

  • 写回答

1条回答 默认 最新

  • 趣享先生 优质创作者: 编程框架技术领域 2024-10-08 09:26
    关注

    帮你代码修改了一下:(答题不易,还请采纳!)

    
    #include <stdio.h>
    #include <math.h>
    #include <stdbool.h>
     
    const int MOD = 998244353;
     
    // 检查是否为质数
    bool isPrime(long long n) {
        if (n <= 1) return false;
        if (n <= 3) return true;
        if (n % 2 == 0 || n % 3 == 0) return false;
        for (long long i = 5; i * i <= n; i += 6) {
            if (n % i == 0 || n % (i + 2) == 0) return false;
        }
        return true;
    }
     
    // 计算数位和
    long long digitSum(long long n) {
        long long sum = 0;
        while (n > 0) {
            sum += n % 10;
            n /= 10;
        }
        return sum;
    }
     
    int main() {
        long long L, R;
        scanf("%lld %lld", &L, &R);
     
        long long result = 1;
        long long sqrtR = (long long)sqrt(R) + 1; // 加1确保取到R的平方根
     
        for (long long i = (long long)sqrt(L); i < sqrtR; i++) {
            long long square = i * i;
            if (square >= L && square <= R && isPrime(digitSum(square))) {
                result = (result * square) % MOD;
            } else {
                result = 0;
            }
        }
        printf("%lld\n", result);
        return 0;
    }
    
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月17日
  • 修改了问题 10月17日
  • 修改了问题 10月8日
  • 创建了问题 10月8日