cho n < 105 và k tìm cách xóa k chữ số sao cho sau khi xía n là lớn nhất
Hãy nhập câu hỏi của bạn vào đây, nếu là tài khoản VIP, bạn sẽ được ưu tiên trả lời.
câu 1:ta có số 975 chia hết cho 65 và lớn nhất
ta có:975/65=15
lại có thương=số dư suy ra số dư =15
suy ra số cần tìm là 975+15=990
Vậy số cần tìm là 990
câu 2 =4
câu 3 = 3
tick đi mình cho lời giải chi tiết
#include <iostream>
#include <vector>
using namespace std;
vector<int> primeFactors(int n) {
vector<int> factors;
for (int i = 2; i * i <= n; i++) {
while (n % i == 0) {
factors.push_back(i);
n /= i;
}
}
if (n > 1) factors.push_back(n);
return factors;
}
int main() {
int n, k;
cin >> n >> k;
vector<int> a(n);
for (int i = 0; i < n; ++i) {
cin >> a[i];
}
vector<int> factors = primeFactors(k);
int sum = accumulate(a.begin(), a.end(), 0);
vector<vector<bool>> dp(n+1, vector<bool>(sum+1, false));
dp[0][0] = true;
for (int i = 1; i <= n; ++i) {
for (int j = 0; j <= sum; ++j) {
dp[i][j] = dp[i-1][j];
if (j >= a[i-1]) {
for (int factor : factors) {
if (a[i-1] % factor == 0) {
dp[i][j] = dp[i][j] || dp[i-1][j-a[i-1]];
break;
}
}
}
}
}
for (int j = 0; j <= sum; ++j) {
if (dp[n][j]) {
cout << j << endl;
break;
}
}
return 0;
}
def xoa_phan_tu_chia_het_cho_3(arr):
return [x for x in arr if x % 3 != 0]
# Nhập số phần tử của dãy
n = int(input())
# Nhập dãy số nguyên
day_so = list(map(int, input().split()))
# Xóa các phần tử chia hết cho 3
ket_qua = xoa_phan_tu_chia_het_cho_3(day_so)
# In ra dãy sau khi xóa
print(*ket_qua)
Program soa_so;
Uses crt;
Var i,j,k,l,n:longint;
st2:string;
Begin
Clrscr;
write('nhap n,k:');readln(n,k);
str(n,st2);k:=length(st2)-k;
For i:=1 to k do
Begin
l:=i;
For j:=i to length(st2)k do
If st2[l]<st2[j] then l:=j;
If l>i then delete(st2,i,l-i);
End;
Write(copy(st2,1,k));
Readln;
End.