• PAT甲级1015题解——令人迷茫的翻译


    题目分析:

    本题计算过程简单,但翻译令我迷茫:题意读清楚很重要(反正我是懵逼了)对于一个10进制的数,如果它是一个素数,把它转换成d进制,再将这个序列逆序排,这个逆序的d进制数的10进制表示如果也是素数,则输出Yes,否则No

     1 #include<iostream>
     2 #include<cmath>
     3 using namespace std;
     4 
     5 int a[20];        //存放n转换成的d进制数的每一位 
     6 int cnt;        //存放d进制的位数
     7  
     8 bool isPrime(int x){
     9     if(x == 1) return false;
    10     for(int i = 2; i <= sqrt(x); i++){
    11         if(x % i == 0) return false;
    12     } 
    13     return true;
    14 }
    15 
    16 void transform(int n, int d){
    17     //短除法 将值存入a数组
    18     cnt = 1;
    19     while(n > 0){        
    20         int x = n % d;
    21         a[cnt++] = x; 
    22         n /= d;
    23     }
    24     //将a数组从cnt-1~1开始遍历完成将d进制的翻转再次转换成10进制表示的过程
    25     int ans = 0;
    26     int base = 1;
    27     for(int i = cnt-1; i >= 1; i--){
    28         ans += base * a[i];
    29         base *= d;
    30     } 
    31     if(isPrime(ans)) printf("Yes
    ");
    32     else printf("No
    ");
    33 } 
    34 
    35 int main(){
    36     int n, d;
    37     while(scanf("%d", &n) != EOF){
    38         if(n < 0) break;
    39         scanf("%d", &d);
    40         if(isPrime(n)){
    41             //将n转换成d进制的数
    42             transform(n, d); 
    43         }else{
    44             printf("No
    ");
    45         }
    46     }
    47     return 0;
    48 }
    如果有任何意见请在评论区积极留言
  • 相关阅读:
    echarts 地图 动态 展示 结合css+js
    优化之误!
    SQL Server 运行计划操作符具体解释(3)——计算标量(Compute Scalar)
    NHibernate概括
    C++的IO操作
    (数据结构整理)NJUPT1054
    nginx模块开发
    Html学习(三) 分类学习
    android 屏幕适配
    【POJ 1845】 Sumdiv (整数唯分+约数和公式+二分等比数列前n项和+同余)
  • 原文地址:https://www.cnblogs.com/YLTFY1998/p/11694354.html
Copyright © 2020-2023  润新知