Masala A. Defis - bu chiziqcha
Shartida aytilganidek matn yoki so'z beriladi. Har bir so'z uchun:
agar so'zning uzunligi 10 ta belgi va undan ortiq bo'lsa, uni ikkiga bo'linadi va ularni o'rtasiga defis qo'yiladi. Agar matndagi so'z 10 belgidan oshsa va belgilar soni toq bo'lib qolsa so'zining ikkinchi tomoniga ortiqcha bo'lib qolgan belgini qo'shib ikkiga bo'linadi va o'rtasiga defis qo'yiladi. 10 belgidan kam bo'lsa so'zni avvalgi holicha saqlanadi. O'zgartirilgan so'zlar defis bilan qo'shiladi va qator qaytariladi.
Python dasturlash tilida yechim:
def s(i):
w = i.split(" ")
o = []
for a in w:
if len(a) >= 10:
f = a[:int(len(a)/2)]
s = a[int(len(a)/2):]
o.append(f + "-" + s)
else:
o.append(a)
t = "-".join(o)
return t
i = input()
print(s(i))
C++ dasturlash tilida yechim:
#include <iostream>
#include <vector>
#include <sstream>
std::string s(const std::string& input) {
std::stringstream ss(input);
std::vector<std::string> w;
std::string f;
while (ss >> f) {
if (f.length() >= 10) {
std::string f1 = f.substr(0, f.length() / 2);
std::string f2 = f.substr(f.length() / 2);
w.push_back(f1 + "-" + f2);
} else {
w.push_back(f);
}
}
std::string r = "";
for (const std::string& w : w) {
r += w + "-";
}
if (!r.empty()) {
r.pop_back();
}
return r;
}
int main() {
std::string input;
std::getline(std::cin, input);
std::cout << s(input) << std::endl;
return 0;
}
Masala B. Ali va Vali
Algoritm: Matematika
Python dasturlash tilida yechim:
n,k=map(int,input().split())
j=(n*k)//(k-1)
print(j,j-n)
C++ dasturlash tilida yechim:
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int n, k; cin>>n>>k;
int j = n / (k-1);
int v = n + j;
cout << v << " " << j;
return 0;
}