HSG9 Bắc Ninh 2026 - Tổng ước
Xem dạng PDF
Gửi bài giải
Điểm:
14,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
1G
Input:
stdin
Output:
stdout
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT
Cho 3 số nguyên dương ~a, b, c~ (~a, b, c \le 10^{12}~). Gọi ~T_{a}~ là tổng các ước số dương của số ~a~; ~T_{b}~ là tổng các ước số dương của số ~b~; ~T_{c}~ là tổng các ước số dương của số ~c~.
Yêu cầu: Tìm giá trị lớn nhất trong 3 số ~T_{a}~, ~T_{b}~, ~T_{c}~.
Input
Gồm 3 số ~a, b, c~ (~a, b, c \le 10^{12}~) cách nhau bởi dấu cách.
Output
Một số duy nhất là kết quả tìm được.
Sample Input 1
8 13 10
Sample Output 1
18
- Tổng các ước dương của 8 là 15.
- Tổng các ước dương của 13 là 14.
- Tổng các ước dương của 10 là 18.
~\rightarrow~ Tổng ước lớn nhất là 18.
Subtasks
- Subtask 1: có 70% số test với ~a, b, c \le 10^{6}~;
- Subtask 2: có 30% số test với ~a, b, c \le 10^{12}~.
Bình luận
include<bits/stdc++.h>
using namespace std; using ll=long long; ll solve(ll n){ if(n<=0){ return 0; } ll sum=0; for(ll i=1;i*i<=n;i++){ if(n%i==0){ sum+=i; if(i!=n/i){ sum+=(n/i); } } } return sum; } ll getmax(ll a,ll b){ if(a>b){ return a; } return b; } int main(){ ll a,b,c; cin>>a>>b>>c; ll x=solve(a); ll y=solve(b); ll z=solve(c); cout<<getmax(x,get_max(y,z)); return 0; }