NC25134. [USACO 2006 Ope B]Bedtime Reading, II
描述
输入描述
Line 1: Two space-separated integers: start and end (1 <= start <= end <= 500000)
输出描述
Lines 1..?: Each line contains a space-separated list that represents one chain of numbers calculated using the described bess() function.
示例1
输入:
200 1200
输出:
220 284 496 1184 1210
C++14(g++5.4) 解法, 执行用时: 37ms, 内存消耗: 4332K, 提交时间: 2019-06-15 11:37:20
#include<iostream> using namespace std; long long sum[5000100]; int main() { for(int i=1;i<=500000;++i) for(int j=i+i;j<=500000;j+=i) sum[j]+=i; int a,b; cin>>a>>b; for(int i=a;i<=b;++i) if(sum[i]>=i&&sum[sum[i]]==i) { if(sum[i]==i) cout<<i<<endl; else cout<<i<<" "<<sum[i]<<endl; } return 0; }
C++(clang++11) 解法, 执行用时: 15ms, 内存消耗: 2424K, 提交时间: 2021-02-08 19:58:15
#include<bits/stdc++.h> using namespace std; int s[500010]; int l,r; void work() { for(int i=1;i<=500000;i++) { for(int j=i+i;j<=500000;j+=i) s[j]+=i; } } int main() { work(); cin>>l>>r; for(int i=l;i<=r;i++) { int j=s[i]; if(i<=500000&&j<=500000&&i<=j&&s[j]==i) { if(i!=j) cout<<i<<' '<<j<<endl; else cout<<i<<endl; } } return 0; }