Beautiful Year
Beautiful Year
تم إعطاؤك سنة. جد أصغر سنة تكون أكبر من السنة المعطاة مباشرة وتحتوي على خانات مختلفة تمامًا.
يمكنك افتراض أن السنة على الأقل 1000 وعلى الأكثر 9000.
على سبيل المثال، إذا كانت السنة 1987، فإن السنة التالية التي تحقق الشرط هي 2013.
:::
Solution
يمكننا البدء بزيادة السنة بمقدار واحد حتى نحصل على سنة تحتوي جميع خاناتها مختلفة.
#include<iostream>
using namespace std;
int main () {
int year;
cin >> year;
year += 1;
while (allDifferentDigits(year) == false) {
year += 1;
}
cout << year << '\n';
}الآن، كيف نتحقق من أن السنة تحتوي على جميع خانات مختلفة؟ لاحظ أن عدد خانات السنة هو أربعة. هذا يعني أنه يمكننا أخذ الخانة الأخيرة كباقي القسمة على 10، ثم طرحها وتقسيم الناتج على 10، ونكرر العملية ثلاث مرات أخرى لنحصل على الأربع خانات ونقارنها.
bool allDifferentDigits(int year) {
int digit1 = year % 10;
year = (year - digit1) / 10;
int digit2 = year % 10;
year = (year - digit2) / 10;
int digit3 = year % 10;
year = (year - digit3) / 10;
int digit4 = year % 10;
if (digit1 != digit2 && digit1 != digit3 && digit1 != digit4
&& digit2 != digit3 && digit2 != digit4 && digit3 != digit4) {
return true;
} else {
return false;
}
}