【HDU 1286】找新朋友

找新朋友(题目链接)

思路

  • 直接暴力,TLE
  • 使用map存储中间计算值优化,TLE
  • 使用欧拉函数计算,AC

代码

#include <iostream>
#include <map>
using namespace std;
#define LOCAL 0

//返回小于n且与n互质的数的个数 
int euler(int n){ 
    int ans = n;
    int tmp = n;
    for(int i = 2; i*i <= tmp; i++){
        if(tmp%i == 0){
            ans = ans / i * (i - 1); 
            while(tmp % i == 0){
                tmp /= i;            
            } 
        }
    }
    if(tmp>1) {
        ans = ans / tmp * (tmp-1);
    }
    return ans;
}

int main(){   
#if LOCAL
    freopen ("datain.txt","r",stdin);
    freopen ("dataout.txt","w",stdout);
#endif
    
    int n;
    cin >> n;
    for(int i = 0;i < n;i++){
        int t;
        cin >> t;
        cout << euler(t) << endl;
    }
        
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,010评论 2 89
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,019评论 25 708
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,859评论 2 59
  • 年后突然想学香道,到处找信息,找香道工具,找了一些信息,看看没什么感觉,就把这事儿放下了。前几天半夜突然醒了,睡不...
    惠儿和好时光阅读 410评论 0 0
  • 如今不像乘着有敞篷马车四处奔波的年代那样,有着荒凉狂野的西部地区等待我们去征服;但是,却有一个广袤的商业、金融和工...
    刘冰杰阅读 155评论 0 0