Đ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
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ở.
bài này sài ct hả ad