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

Hãy đọc nội quy trước khi bình luận.



  • 0
    truongan2013tl  đã bình luận lúc 13, Tháng 10, 2026, 8:43

    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; }