A Drop of the Programming Sea

یک قطره از دریای برنامه نویسی: وبلاگ امیرحسین مهدی‌نژاد، برنامه‌نویس، مدرس برنامه‌نویسی و دانشجوی مهندسی کامپیوتر

A Drop of the Programming Sea

یک قطره از دریای برنامه نویسی: وبلاگ امیرحسین مهدی‌نژاد، برنامه‌نویس، مدرس برنامه‌نویسی و دانشجوی مهندسی کامپیوتر

● Educational Codeforces Round 4 - A. The Text Splitting

چهارشنبه, ۳ آذر ۱۳۹۵، ۰۵:۱۸ ب.ظ

ممد قصد دارد یک رشته کاراکتر را تکه تکه کند!

او یک رشته به نام s و به سایز n و دو عدد p و q در اختیار دارد و میخواهد s را به قطعه هایی به طول های p و q تقسیم کند. برای مثال اگر s را "Hello" در نظر بگیریم، برای p=2 و q=3 او می تواند این رشته را به دو زیر رشته ی "Hel" و "lo" تقسیم کند یا در حالتی دیگر به دو زیر رشته ی "He" و "llo" نیز می تواند.

گفتنی است لزومی ندارد که حتماً از هر دو عدد p و q استفاده کند، می تواند رشته را به تعدادی زیر رشته به طول q تقسیم کند و بلعکس. (به مثال دوم در ادامه مطلب توجه کنید)

در انجام این کار خطیر ممد را مساعدت فرمایید.

input
5 2 3
Hello
output
2
He
llo
input
10 9 5
Codeforces
output
2
Codef
orces
input
6 4 5
Privet
output
-1
input
8 1 1
abacabac
output
8
a
b
a
c
a
b
a
c

ورودی:

در خط اول ورودی، سه عدد صحیح مثبت n و p و q داده می شود.

در خط دوم یک رشته کارکتر (string) که قرار است قطعه قطعه شود وارد می شود.

n, p, q (1 ≤ p, q ≤ n ≤ 100)


خروجی:

اگر ناممکن است که رشته ی مورد نظر را به زیر رشته هایی به طول p و q تقسیم کند، فقط عدد "-1" را چاپ کنید.

در غیر این صورت در خط اول خروجی عدد k نشان دهنده ی تعداد زیر رشته ها را چاپ کنید. و در هریک از k خط بعدی یک زیر رشته را چاپ کنید که حتماً سایز آن یکی از دو عدد p یا q است.

لازم به ذکر است که ترتیب زیر رشته ها باید سازنده ی رشته ی اصلی از چپ به راست باشد؛ و در صورتی که بیش از یک جواب برای مسئله وجود دارد، چاپ هر کدام از آنها تفاوتی نمی کند.


// A Drop of the Programming Sea - adops.blog.ir
#include <bits/stdc++.h> using namespace std; #define rout(n){cout << n << endl; return 0;} int main() { int n, p, q, x; string s; cin >> n >> p >> q >> s; for(int i=0 ; i<=n ; i+=p) { if((n-i)%q==0) { x=(n-i)/q; cout << i/p+x << endl; for(int j=0 ; j<i ; j+=p) cout << s.substr(j,p) <<endl; for(int j=0 ; j<x ; j++) cout << s.substr(i+q*j,q) << endl; return 0; } } rout(-1); }

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی