hdu 5391 Zball in Tina Town 解题报告

来源:互联网 发布:java中框架的作用 编辑:程序博客网 时间:2024/05/17 21:44

Zball in Tina Town

 
 Accepts: 478
 
 Submissions: 2073
 Time Limit: 3000/1500 MS (Java/Others)
 
 Memory Limit: 262144/262144 K (Java/Others)
问题描述
Tina Town 是一个善良友好的地方,这里的每一个人都互相关心。Tina有一个球,它的名字叫zball。zball很神奇,它会每天变大。在第一天的时候,它会变大11倍。在第二天的时候,它会变大22倍。在第nn天的时候,它会变大nn倍。zball原来的体积是11。Tina想知道,zball在第n-1n1天时的体积对nn取模是多大呢?Tina是一个蠢蠢的女孩子,当然不会算啦,所以她请你帮她算出这个答案呢。
输入描述
第一行一个正整数TT,表示数据组数接下来TT行,每行一个正整数nn,意义如题面所述T \leq 10^5,2 \leq n \leq 10^9T105,2n109
输出描述
对于每组数据,输出一个正整数,表示答案。
输入样例
2310
输出样例
20

刚看到题,就感觉是有规律的。然后直接打表,找到了规律,n=(1,--)

1 1 2 2 4 0 6 0 0 0 10 0 12 0 0 0 16 0 18 0 0 0 22 0 0 0 0 0 28 0 30 0 0 0 0 0 36 0 0 0 40 0 42 0 0 0 46 0 0 0 0 0 52 0 0 0 0 0 58 0 60 0 0 0 0 0 66 0 0 0 70 0 72 0 0 0 0 0 78 0 0 0 82 0 0 0 0 0 88 0 0 0 0 0 0 0 96 0 0 0 100 0 102 0 0 0 106 0 108 0 0 0 112 0 0 0 0 0 0 0 0 0 0 0 0 0 126 0 0 0 130 0 0 0 0 0 136 0 138 0 0 0 0 0 0 0 0 0 148 0 150 0 0 0 0 0 156 0 0 0 0 0 162 0 0 0 166 0 0 0 0 0 172 0 0 0 0 0 178 0 180 0 0 0 0 0 0 0 0 0 190 0 192 0 0 0 196 0 198 0 0 0 0 0 0 0 0 0 0 0 210 0 0 0 0 0 0 0 0 0 0 0 222 0 0 0 226 0 228 0 0 0 232 0 0 0 0 0 238 0 240 0 0 0 0 0 0 0 0 0 250 0 0 0 0 0 256 0 0 0 0 0 262 0 0 0 0 0 268 0 270 0 0 0 0 0 276 0 0 0 280 0 282 0 0 0 0 0 0 0 0 0 292 0 0 0 0 0 0 0 0 0 0 0 0 0 306 0 0 0 310 0 312 0 0 0 316 0 0 0 0 0 0 0 0 0 0 0 0 0 330 0 0 0 0 0 336 0 0 0 0 0 0 0 0 0 346 0 348 0 0 0 352 0 0 0 0 0 358 0 0 0 0 0 0 0 366 0 0 0 0 0 372 0 0 0 0 0 378 0 0 0 382 0 0 0 0 0 388 0 0 0 0 0 0 0 396 0 0 0 400 0 0 0 0 0 0 0 408 0 0 0 0 0 0 0 0 0 418 0 420 0 0 0 0 0 0 0 0 0 430 0 432 0 0 0 0 0 438 0 0 0 442 0 0 0 0 0 448 0 0 0 0 0 0 0 456 0 0 0 460 0 462 0 0 0 466 0 0 0 0 0 0 0 0 0 0 0 478 0 0 0 0 0 0 0 486 0 0 0 490 0 0 0 0 0 0 0 498 0 0 0 502 0 0 0 0 0 508 0 0 0 0 0 0 0 0 0 0 0 520 0 522 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 540 0 0 0 0 0 546 0 0 0 0 0 0 0 0 0 556 0 0 0 0 0 562 0 0 0 0 0 568 0 570 0 0 0 0 0 576 0 0 0 0 0 0 0 0 0 586 0 0 0 0 0 592 0 0 0 0 0 598
前几个特殊处理下,然后是个n为素数,则输出素数-1,若不是素数,则为0

代码:

#include <iostream>#include <stdio.h>#include <algorithm>#include <string.h>#include <cmath>using namespace std;//借鉴了荣耀大神的快速判断素数bool prime (long long num){    if (num == 2 || num == 3 || num == 5)        return true;    if (num % 2 == 0 || num % 3 == 0 || num % 5 == 0 || num == 1)        return false;    long long c = 7;    int maxc = (int)(sqrt (num));    while (c <= maxc)    {        if (num % c == 0)            return false;        c += 4;        if (num % c == 0)            return false;        c += 2;        if (num % c == 0)            return false;        c += 4;        if (num % c == 0)            return false;        c += 2;        if (num % c == 0)            return false;        c += 4;        if (num % c == 0)            return false;        c += 6;        if (num % c == 0)            return false;        c += 2;        if (num % c == 0)            return false;        c += 6;    }    return true;}int main(){    int a[10]={0,1,1,2,2,4};    int T;    long long n;    scanf("%d",&T);    while(T--)    {        scanf("%lld",&n);        if(n<5)printf("%d\n",a[n]);        else        {            if(prime(n))printf("%lld\n",n-1);            else printf("0\n");        }    }    return 0;}


0 0
原创粉丝点击