[HDOJ5391]Zball in Tina Town

摘要:
用pid=5391测试的数论中的威尔逊定理主题直接给出了威尔逊定理表达式的语言描述。在初等数论中,威尔逊定理给出了确定自然数是否为素数-1的充要条件,但由于阶乘是爆炸性的,其结论对实际操作意义不大。当n=4时,应特别注意这个问题。这是一次旅行。Cout也将超时。此外,此问题中的数据为2˂=n˂=10^9。需要考虑的是,如果您打印一个表,复杂度为O,如果您单独判断,复杂度则为O,因此您不选择打印表。

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5391

  考的数论中的威尔逊定理,题目直接给出了威尔逊定理的表达式的语言描述。

  在初等数论中,威尔逊定理给出了判定一个自然数是否为素数的充分必要条件。即:当且仅当p为素数时:( p -1 )! ≡ -1 ( mod p ),但是由于阶乘是呈爆炸增长的,其结论对于实际操作意义不大。

  本题特别注意的是n=4的时候,要特判一下,是个trick。cout的话,也是会超时的。还有,本题数据给的是2<=n<=10^9,需要考虑的是如果打表的话,复杂的是O(nsqrt(n)),如果单独判的话是O(n),所以不选择打表。代码如下:

[HDOJ5391]Zball in Tina Town第1张[HDOJ5391]Zball in Tina Town第2张
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <string>
#include <map>
#include <set>
#include <cmath>
#include <vector>
#include <deque>
#include <queue>

using namespace std;
typedef long long LL;

int main() {
    int T;
    scanf("%d", &T);
    while(T--) {
        int flag = 0;
        int n;
        scanf("%d", &n);
        int m = int(sqrt(n));
        for (int i = 2; i < m; i++)
        {
            if (n % i == 0)
            {
                flag++;
                break;
            }
        }
        if(n == 0 || n == 1) {
            printf("1
");
        }
        else if(n == 2) {
            printf("2
");
        }
        else if(!flag) {
            printf("%d
", n-1);
        }
        else {
            printf("0
");
        }
    }
}
View Code

免责声明:文章转载自《[HDOJ5391]Zball in Tina Town》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[HDOJ4135]Co-prime[模拟]位运算实现四则运算下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C/C++时间函数使用方法

C/C++对时间的操作也有许多值得大家注意的地方。最近,在技术群中有很多网友也多次问到过C++语言中对时间的操作、获取和显示等等的问题。下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的使用方法. 通过学习许多C/C++库,你可以有很多操作、使用时间的方法。但在这之前你需要了解一些“时间”和“日期”的概念,主要有以下几个: Coordinated...

windows下IPv4通信(C++、MFC)

Cilect #include <stdio.h> #include <Ws2tcpip.h> #include <winsock2.h> #define HELLO_PORT 7905 #define HELLO_GROUP "224.0.0.1" #pragma comment(lib,"ws2_3...

C++中函数参数的扩展

1,C++ 可以看成是一种更好的 C 语言,所以 C++ 会考虑 C 的欠缺部分,然后给 与一些补充和扩展,本节课讲述 C++ 对函数参数的非常重要的扩展; 2,函数参数的默认值: 1,C++ 中可以在函数声明时为参数提供一个默认值; 1,也可以在函数声明和定义在一起的时候来提供默认值; 2,作用是当函数调用时没有提供参数的值,则使用默认值; 3,int...

Codeforces Round #620 (Div. 2)

A. Two Rabbits 题意:两只兔子分别在xy,相向而跳,一个一次跳a,另一个一次跳b,问能不能相遇,多久相遇。 思路:直接看(y-x)能否被(a+b)整除即可。 1 #include<bits/stdc++.h> 2 #define LL long long 3 #define dl double 4 void rd(int &am...

C语言的本质(6)——位运算

位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。 C语言提供的位运算符列表: 运算符 含义 描述 & 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0 |...

Uva11374 Dijkstra

机场快线是市民从市内去机场的首选交通工具。机场快线分为经济线和商业线两种,线路、速度和价格都不同,你有一张商业线车票,可以坐一站商业线,而其他时候,只能乘坐经济线。假设换乘时间忽略不计,你的任务是找一条去机场最快的路线。 这样我们先从起点开始做一次dijkstra 然后在从终点开始做一次dijkstra, 然后枚举每个商业边。 #include <...