列表

详情


NC25520. 等比数列三角形

描述

求三边都是 的整数,且成等比数列的三角形个数。
由于答案可能很大,所以你要把答案对 取模后输出。
注:本题在oeis上搜过了,搜不到的……

输入描述

一行一个整数 n

输出描述

一行一个整数表示答案

示例1

输入:

9

输出:

10

说明:

除去 9 个等边三角形,还有 {4, 6, 9} 。

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++14(g++5.4) 解法, 执行用时: 563ms, 内存消耗: 488K, 提交时间: 2019-05-11 21:46:45

#include<bits/stdc++.h>
using namespace std;
int n,s;double e=(1+sqrt(5))/2;
int main(){
    cin>>n;
    for(int q=1;q*q<=n;q++)
        for(int p=q;p<=q*e;p++)
            if(__gcd(p,q)==1) s+=n/p/p;
    cout<<s;
}

C++11(clang++ 3.9) 解法, 执行用时: 521ms, 内存消耗: 608K, 提交时间: 2019-05-12 12:13:46

#include<bits/stdc++.h>
using namespace std;
int n,s;double e=(1+sqrt(5))/2;
int main(){
    cin>>n;
    for(int q=1;q*q<=n;q++)
        for(int p=q;p<=q*e;p++)
            if(__gcd(p,q)==1) s+=n/p/p;
    cout<<s;
}

上一题