NYOJ 333 mdd的烦恼&&NYOJ 291 LK的数学题

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=291   http://acm.nyist.net/JudgeOnline/problem.php?pid=333

思路:欧拉函数的应用,详解见这里:http://blog.csdn.net/once_hnu/article/details/6302868 好文章

直接贴代码:

    

#include <iostream>
#include <cstring>
using namespace std;

int euler(int x)
{
    int res = x;
    int a = x;

    for(int i=2;i*i<=a;i++)
    {
        if(a%i==0)
            res = res/i*(i-1);
        while(a%i==0)
            a /= i;
    }

    if(a>1)
        res = res/a*(a-1);
    return res;
}

int main()
{
    int n;
    int res;
    while(cin>>n)
    {
        cout<<euler(n)<<endl;
    }
    return 0;
}
时间: 2024-07-28 12:58:28

NYOJ 333 mdd的烦恼&&NYOJ 291 LK的数学题的相关文章

mdd的烦恼 NYOJ 333

1 #include<stdio.h>//mdd的烦恼(333) 2 #include<math.h> 3 int main() 4 { 5 long long n,i,res; 6 while(scanf("%lld",&n)!=EOF){ 7 res=n; 8 for(i=2;i<=sqrt(n+0.5);i++){ 9 if(n%i==0){ 10 res=res*(i-1)/i; 11 while(n%i==0){ 12 n=n/i; 13

NYOJ 682 初学者的烦恼

初学者的烦恼 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 小c才开始学习c语言,让他最烦恼的就是对字符数组的操作.小C的好朋友小E为了激励他,出了这样一个题目:字符串的移动输出.并给他许诺说,如果他能够在有限的时间内编写出这道题目的代码,并顺利通过就请他去吃大餐,于是小C便认真的敲这个题目的代码去了,聪明的你也来练练手吧. 输入 第一行包括一个整数t,代表有t组数据: 每组数据第一行包括一个整数m(1<=m<=50),第二行有m个小写英文字符,第三行包括一个整

nyoj 925 国王的烦恼(最小生成树)

1 /* 2 题意:N个城市中每两个城市有多条路径连接,可是因为路径存在的天数是有限的!以为某条路经不存在了 3 导致N个城市不能连通了,那么村名们就会抗议!问一共会有多少次抗议! 4 5 思路:最小生成树....我们用最大边来建立树!只要有最大边将节点连接并保证连通!那么边权小的值 6 就可以忽略了!最后将生成树中由(最大边组成的)去重(相同的值只有一次抗议)!这时剩下边的数值就是 7 答案了! 8 */ 9 #include<iostream> 10 #include<cstring

nyoj 189 兔子的烦恼(一)(辗转相除法求最大公约数)

题目189 题目信息 运行结果 本题排行 讨论区 兔子的烦恼(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 在一座山上有n个山洞(每个洞从0~n-1分别编号),这山上有一只兔子躲在山洞里,有一只狼,从编号为0的山洞开始入洞,每隔m-1个洞,再次入洞抓兔子,现在问,兔子能否避免这场灾难? 例如:m=2 and n=6, 狼将要进入的山洞号为:0,2,4,0; 输入 有多组测试数据,不超过1000组; 每组有两个整数m,n(0<m,n<=1000); 注意:程

NYOJ 925 国王的烦恼

从最后一天开始往前加边. 同一天的边同时加到图上,加完之后检查集合数量是否和没加之前有变化. 有变化的话,答案就+1. #include<cstdio> #include <iostream> #include<cstring> #include<cmath> #include<vector> #include<queue> #include<algorithm> using namespace std; const in

nyoj 游戏高手的烦恼 (二分图最小点覆盖)

还是想半天都没想明白.. 做得不多不熟,所以也联系不起来. 二分图最小点覆盖= 二分图的匹配数  详细请看某周的hihocoder 1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<cstring> 5 #include<string> 6 #include<queue> 7 #include<algorithm> 8 #inclu

NYOJ 237 游戏高手的烦恼 &amp;&amp; POJ3041-Asteroids ( 二分图的最大匹配 )

链接: NYOJ 237  游戏高手的烦恼:click here~~ POJ  3041 Asteroids           :click here~~ 题意: 两题一样,翻译不同而已. 有一位传说级游戏高手,在闲暇时间里玩起了一个小游戏,游戏中,一个n*n的方块形区域里有许多敌人,玩家可以使用炸弹炸掉某一行或者某一列的所有敌人.他是种玩什么游戏都想玩得很优秀的人,所以,他决定,使用尽可能少的炸弹炸掉所有的敌人. 现在给你一个游戏的状态,请你帮助他判断最少需要多少个炸弹才能炸掉所有的敌人吧.

NYOJ 237 游戏高手的烦恼

游戏高手的烦恼时间限制:1000 ms | 内存限制:65535 KB难度:5描述有一位传说级游戏高手,在闲暇时间里玩起了一个小游戏,游戏中,一个n*n的方块形区域里有许多敌人,玩家可以使用炸弹炸掉某一行或者某一列的所有敌人.他是种玩什么游戏都想玩得 优秀的人,所以,他决定,使用尽可能少的炸弹炸掉所有的敌人. 现在给你一个游戏的状态,请你帮助他判断最少需要多少个炸弹才能炸掉所有的敌人吧. 比如说,下图中X表示敌人 X . X . X . . X . 则,他只需要炸掉第1行与第2列就能炸掉所有的敌

NYOJ 280 LK的项链 &amp;&amp;POJ 2409 Let it Bead(polya 定理)

NYOJ 280 LK的项链  :click here POJ 2409 Let it Bead:click here 题意:一盒有红.蓝.绿三种颜色的珠子,每种颜色珠子的个数都大于24,现在LK想用这一盒珠子穿出一条项链,项链上的珠子个数为n(0<=n<=24),请你帮她计算一下一共可以用这一盒珠子可以穿出多少条不同的项链.通过旋转.翻转达到同一种状态的被认为是相同的项链. poj 上是c种颜色,s个珠子组成,数据比24小. 思路:今天刚接触到polya 定理: Polya定理:设G是n个对