nyoj998(euler)

题意:题意:给出n和m,求满足条件gcd(x, n)>=m的x的gcd(x, n)的和,其中1<=x<=n,1<= n, m <= 1e9;

思路:此题和nyoj1007差不多,比1007简单一点;http://www.cnblogs.com/geloutingyu/p/5966998.html(1007题解)

1 #include <iostream>
 2 #include <stdio.h>
 3 #define ll long long
 4 using namespace std;
 5
 6 /*****此题中这个euler函数会超时
 7 int euler(int n){
 8     int ans=1;
 9     for(int i=2; i*i<=n; i++){
10         if(n%i==0){
11             ans*=(i-1);
12             n/=i;
13             while(n%i==0){  //×××这种写法虽然避免了除法运算,不过需要好多乘法运算可能会超时
14                 ans*=i;
15                 ans/=i;
16             }
17         }
18     }
19     if(n>1){
20         ans*=n-1;
21     }
22 }*/
23
24 int euler(int n){
25      int ans=n;
26     for(int i=2; i*i<=n; i++){
27         if(n%i==0){
28             ans=ans*(i-1)/i;
29             while(n%i==0){
30                 n/=i;
31             }
32         }
33     }
34     if(n>1){
35         ans=ans*(n-1)/n;
36     }
37 }
38
39
40 int main(void){
41     ll a, b;
42     while(~scanf("%d%d", &a, &b)){
43         ll ans=0;
44         for(int i=1; i*i<=a; i++){
45             if(a%i==0){
46                 if(i>=b){
47                     ans+=(ll)(i*(euler(a/i)));
48                 }
49                 if(i*i!=a && a/i>=b){
50                     ans+=(ll)(a/i*(euler(i)));
51                 }
52             }
53         }
54         printf("%lld\n", ans);
55     }
56     return 0;
57 }
时间: 2024-10-12 01:19:04

nyoj998(euler)的相关文章

poj2284 That Nice Euler Circuit(欧拉公式)

题目链接:poj2284 That Nice Euler Circuit 欧拉公式:如果G是一个阶为n,边数为m且含有r个区域的连通平面图,则有恒等式:n-m+r=2. 欧拉公式的推广: 对于具有k(k≥2)个连通分支的平面图G,有:n-m+r=k+1. 题意:给出连通平面图的各顶点,求这个欧拉回路将平面分成多少区域. 题解:根据平面图的欧拉定理“n-m+r=2”来求解区域数r. 顶点个数n:两两线段求交点,每个交点都是图中的顶点. 边数m:在求交点时判断每个交点落在第几条边上,如果一个交点落在

The Euler function[HDU2824]

The Euler functionTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6018 Accepted Submission(s): 2539 Problem DescriptionThe Euler function phi is an important kind of function in number theory, (n)

Python练习题 048:Project Euler 021:10000以内所有亲和数之和

本题来自 Project Euler 第21题:https://projecteuler.net/problem=21 ''' Project Euler: Problem 21: Amicable numbers Let d(n) be defined as the sum of proper divisors of n (numbers less than n which divide evenly into n). If d(a) = b and d(b) = a, where a ≠ b

Python练习题 047:Project Euler 020:阶乘结果各数字之和

本题来自 Project Euler 第20题:https://projecteuler.net/problem=20 ''' Project Euler: Problem 20: Factorial digit sum n! means n × (n ? 1) × ... × 3 × 2 × 1 For example, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800, and the sum of the digits in the number 10! i

Python练习题 046:Project Euler 019:每月1日是星期天

本题来自 Project Euler 第19题:https://projecteuler.net/problem=19 ''' How many Sundays fell on the first of the month during the twentieth century (1 Jan 1901 to 31 Dec 2000)? Answer: 171 ''' from datetime import * firstDay = date(1901,1,1) lastDay = date(

UVA LIVE-3263 - That Nice Euler Circuit

画一个顶点为偶数的封闭的二维图,当然.这个图能够自交,给出画的过程中的一些轨迹点.求出这个图把二次元分成了几部分,比如三角形把二次元分成了两部分. 这个的话,有图中顶点数+部分数-棱数=2的定律,这是核心思想.也就是所谓的欧拉定律拓扑版,好吧,事实上细致想想也是可以想出这个规律来的. 做出这题纯属意外,因为给的点的坐标全是用整数表示,为了不用考虑精度问题,一開始.我就想仅仅用这些点.就是说不再算出其他交点之类的,就把答案算出, 由于当前轨迹与之前轨迹无非三种情况:规范与不规范相交,不相交 不相交

Python练习题 035:Project Euler 007:第10001个素数

本题来自 Project Euler 第7题:https://projecteuler.net/problem=7 # Project Euler: Problem 7: 10001st prime # By listing the first six prime numbers: # 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13. # What is the 10 001st prime number? # Answer

SCU 4520 Euler 欧拉回路

Euler Time Limit:0MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Description Time Limit: 1000 MS              Memory Limit: 256 M 给出一幅n个点,m条边的图,分别判断该图是无向图和有向图条件下,是否存在欧拉通路. 输入 输入包含多组数据.第一行为一个整数T(1?≤?T?≤?100),代表数据组数,对于每组数据: 第一行是两个整数n和m( 1?≤?n?

hdu-2824 The Euler function(欧拉函数)

题目链接: The Euler function Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4987    Accepted Submission(s): 2098 Problem Description The Euler function phi is an important kind of function in numb