2670. Lucky Number 2
阿新 • • 發佈:2019-01-12
Petya loves lucky numbers very much. Everybody knows that lucky numbers are positive integers whose decimal record contains only the lucky digits 4 and 7. For example, numbers 47, 744, 4 are lucky and 5, 17, 467 are not.
Petya loves long lucky numbers very much. He is interested in the minimum lucky number d
Input
The single line contains four integers a1, a2, a3 and a4 (1≤a1,a2,a3,a4≤106).
Output
On the single line print without leading zeroes the answer to the problem − the minimum lucky number d
Examples
Input
2 2 1 1
Output
4774
Input
4 7 3 1
Output
-1
規律:4774,有一個47,一個74;4747,有兩個47,一個74;7474,有兩個74,一個47;
要保證輸出數字最小,那麼要把多餘的4儘量往前放,多餘的7儘量往後放。
- 當c==d的時候,只有a>c(d)或者a==c(d)兩種情況。
- a>c,先把多餘的4輸出(a-c-1個4),再輸出c個47(這時有c個47,c-1個74),再把多餘的7輸出(b-c),最後輸出一個4.
- a==c,先輸出一個7,再輸出c個47(這時有c個47,c個74),最後把剩餘的7輸出。
- 當c>d,輸出a-d個4,再輸出d個74,最後輸出剩下的7。
- 當c<d,輸出一個7,再輸出c個47,再把剩餘7輸出,最後輸出4。
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int a,b,c,d;
cin>>a>>b>>c>>d;
if((abs(c-d)==1||abs(c-d)==0)&&min(a,b)>=max(c,d)&&(a!=c||b!=d)){
int i;
if(c==d){
if(a>c){
for(i=0;i<a-c-1;i++) cout<<4;
for(i=0;i<c;i++) cout<<47;
for(i=0;i<b-c;i++) cout<<7;
cout<<4;
}else{
cout<<7;
for(i=0;i<c;i++) cout<<47;
for(i=0;i<b-c-1;i++) cout<<7;
}
}else if(c>d){
for(i=0;i<a-d;i++) cout<<4;
for(i=0;i<d;i++) cout<<74;
for(i=0;i<b-d;i++) cout<<7;
}else{
cout<<7;
for(i=0;i<a-c-1;i++) cout<<4;
for(i=0;i<c;i++) cout<<47;
for(i=0;i<b-c-1;i++) cout<<7;
cout<<4;
}
}else{
cout<<-1<<endl;
}
return 0;
}