Điểm:
300 (p)
Thời gian:
1.0s
Bộ nhớ:
1023M
Input:
bàn phím
Output:
màn hình
Cho số nguyên dương \(N (N \leq 2∗10^9)\).
Yêu cầu: Đếm số lượng ước số của \(N\) và tổng các ước số của \(N\).
Input
- Số nguyên dương \(N\)
Output
- Chứa hai số nguyên là sô lượng ước số và tổng các ước của \(N\)
Example
Test 1
Input
10
Output
4 18
Note
- Số \(10\) có ước là \(1\) \(2\) \(5\) \(10\) và tổng \(1 + 2 + 5 + 10 =18\)
Bình luận
ít thời gian tóa đi
nếu bỏ bớt còn 5 test là tui ac rùi
:((((((((
Cái này sai là sao ta? (Code bằng Python)
include <bits/stdc++.h>
using namespace std;
long long n,dem = 0,tong = 0;
int main(){
cin >> n;
long long h = sqrt(n);
for (long long i = 1;i <= h;i++)
if (n % i == 0){
dem+=2;
tong+=i + n/i;
}
if (h*h == n){
dem--;
tong-=h;
}
cout << dem << " " << tong;
return 0;
}
Ko cần làm như thế
include <bits/stdc++.h>
using namespace std;
ll n,dem = 0,tong = 0;
int main(){
cin >> n;
ll h = sqrt(n);
for (ll i = 1;i <= h;i++)
if (n % i == 0){
dem+=2;
tong+=i + n/i;
}
if (h*h == n){
dem--;
tong-=h;
}
cout << dem << " " << tong;
return 0;
}
import math
N = int(input().strip())
dem = 0
k = 0
for i in range(1, int(math.sqrt(N)) + 1):
if N % i == 0:
dem += 1
k += i
if i != N // i:
dem += 1
k += N // i
print(dem,k)
Mình xin chia sẻ cách giải bài này như sau:
++ Tăng biến đếm ước.
++ Tăng tổng ước lên n/i đơn vị.
Code mẫu C++
include <bits/stdc++.h>
using namespace std;
int main() {
long long n, dem, s;
cin >> n;
dem = 0;
s = 0;
for (int i = 1; i <= sqrt(n); i++) {
if (n % i == 0) {
dem++;
s = s + i;
if (i != n / i) {
dem++;
s = s + (n / i);
}
}
}
cout << dem << " " << s;
return 0;
}
Tăng time cho py3 dc ko ad
include <bits/stdc++.h>
using namespace std;
int main()
{
long long n,d=0;
cin>>n;
long long s=0;
for(int i=1; i<=sqrt(n);i++)
if (n%i==0)
{
s+=i;d++;
long long j=n/i;
if(i!=j)
{
s=s+j;
d++;
}
}
Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào đây để mở.
Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào đây để mở.
1 bình luận nữa