zoukankan      html  css  js  c++  java
  • 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 }
    如果有任何意见请在评论区积极留言
  • 相关阅读:
    HDU 1251 统计难题
    HDU 1212 Big Number
    HDU 1205 吃糖果
    HDU 5776 Sum
    19 中山重现赛 1002 triangle
    7.29 线段树扫描线 ,矩形扫描
    一个很好的主席树总结
    7.14 单调栈 单调队列 +dp优化
    7.14 一个烦人的bug:dp[ q[tail] ] ---> dp[ tail ]
    7.13 cf573 补题
  • 原文地址:https://www.cnblogs.com/YLTFY1998/p/11694354.html
Copyright © 2011-2022 走看看