|  | 
|  | 
| | The authors should've mentioned these in the question. Like if q is 0 then you should print 10 but if it is any number between 1 to 9 then you should print that number only, i.e. 2 for 2, 4 for 4 not 14 for 4. Thanks, that saved me a lot of time. I was printing 0 for 0. Which makes sense in my opinion.thanks to you .It was really helpfulHow is it POSSIBLE to find 42 test case?It seems like everything should work fine..
 OK, found my mistake. 777&222 would be very helpful test cases)150 : 556
 Edited by author 14.06.2020 17:05
 There is another interesting test case that might be a cause of WA8. Try 12, and the right answer should be 26.
 Edited by author 15.03.2024 16:13
#include<bits/stdc++.h>using namespace std;
 bool isPrime(int n)
 {
 if(n!=2&&n%2==0)return false;
 if(n<2)return false;
 for(int i=3;i<=sqrt(n);i+=2)
 {
 if(n%i==0)return false;
 }
 return true;
 }
 int main()
 {
 int n;
 cin>>n;
 int x=9,r;
 if(n==1)cout<<1<<endl;
 else if(n==0)cout<<10<<endl;
 else{
 vector<int>v;
 while(1)
 {
 if(n%x==0)
 {
 if(isPrime(n)==true)
 {
 if(n>9){cout<<-1<<endl;return 0;}
 }
 n=n/x;
 if(x==1)break;
 v.push_back(x);
 }
 else
 {
 x--;
 }
 
 }
 for(int i=v.size()-1;i>=0;i--)
 {
 cout<<v[i];
 }
 cout<<endl;
 }
 }
The output needs to be sorted in ascending order(!)
 so for test number 5: 45
 
 the correct answer is 59 (5*9)
 
 and 95 (9*5) will be rejected.
 
 Hope this helps someone.
 Mine does return 59 yet its said to be WA simple anwser: WA
 
 Edited by author 13.11.2022 12:39
What is the mistake?n = int(input())
 a = []
 for i in range(1, n+1):
 if n % i == 0:
 a.append(i)
 if n == 1:
 print("1")
 exit(0)
 if n == 0:
 print("10")
 exit()
 if len(a) > 2:
 for i in range(len(a) - 1):
 if a[i] * a[i + 1] == n or a[i]*a[i] == n:
 if a[i] * a[i + 1] == n:
 s = "".join(sorted(str(a[i])+str(a[i+1])))
 print(s)
 else:
 print(a[i], a[i], sep="")
 else:
 print("-1")
Whats wrong with anything here?#include <bits/stdc++.h>
 using namespace std;
 using ll=long long;
 using ui=unsigned int;
 int main() {
 //ios::sync_with_stdio(0);
 //cin.tie(0);
 ll n;cin>>n;
 if(!n){
 cout<<10;
 return 0;
 }
 else if(n<10){
 cout<<n;
 return 0;
 }
 vector<int>v;
 ll l=n;
 for(bool q=1;q;){
 q=0;
 for(ll i=9;i>1;i--){
 if(l%i==0){
 l/=i;
 v.push_back(i);
 q=1;
 
 }
 }
 }
 v.push_back(l);
 sort(v.begin(),v.end());
 if(v[0]==1)for(int i=1;i<v.size();i++)cout<<v[i];
 else cout<<-1;
 return 0;
 }
 Ok later I figured out that instead of dividing by all the numbers consecutively, dividing by the current factor between 2 to 9 repeatedly until it isn't a factor provides the fewest digits. For example, input 1000000 gives 245555558 in the above program, whereas 2 and 4 could be replaced by 8 for better result.
 Edited by author 14.10.2022 13:41
if u have wa 44 just remove one in the cyclic factorization, if there is one.<=sqrt() + 1   -- bad
 <=sqrt()       -- good
I don't know the problem
 use std::io;
 use std::io::BufReader;
 use std::io::BufRead;
 fn minimal_product_digit(n: i64) -> i64{
 if n == 0 {return 10};
 if n < 10 { return n};
 
 let f : Vec<i64> = vec![2,3,5,7];
 let mut aux = n;
 let mut ret : Vec<i64> = Vec::new();
 for i in f{
 
 if  aux % i== 0 {
 
 loop{
 aux/=i;
 ret.push(i);
 if aux % i != 0 {
 break;
 }
 }
 }
 };
 
 if ret.is_empty() || aux > 1 {
 return -1;
 }
 
 match ret.iter().fold(0,|acc,elem| if *elem == 3{acc + 1} else {acc}) {
 
 1 => {
 
 let index = ret .iter().position(|&x| x == 3).unwrap();
 
 if index > 0{
 
 ret.remove(index);
 
 let k = ret.get_mut(index - 1).unwrap();
 
 *k = 6;
 
 ret.sort();
 
 }
 }
 
 _ => ()
 
 }
 let mut v : Vec<i64> = Vec::new();
 for i in ret{
 
 match i {
 
 2 | 3=>
 
 match v.last_mut(){
 
 None => v.push(i),
 Some(last) if i ==3 && *last == 2 => v.push(i),
 Some(last) => {
 let valor = *last;
 if (valor * i) < 10{
 *last = valor*i
 }
 else{
 v.push(i);
 }
 }
 }
 _ => v.push(i)
 }
 }
 
 v.sort();
 v.iter().fold(0, |acc, elem| acc * 10 + elem)
 
 }
 
 fn main() {
 
 let mut line = String::new();
 let mut stdin = BufReader::new(io::stdin());
 
 stdin.read_line(&mut line).unwrap();
 
 let lim = line.trim().parse::<i64>().unwrap();
 
 println!("{:?}",minimal_product_digit(lim));
 
 }
can anyone tell me what is test case 13?i dont know why my code is failing test 4.can any body give me a series of test cases where this kind of program may fail. please help  n=0
 Answer 10
 but i think if n<10 then least possible number will  be n.your solution makes it 2 digit.
 The task is to find a minimal POSITIVE number, so 0 doesn't work.#include <iostream>#include <vector>
 #include <algorithm>
 
 using namespace std;
 
 int main()
 {
 int Num = 0, ans = -2;
 
 cin >> Num;
 
 vector <int> fact;
 
 int n = 2;
 
 while (Num > 1)
 {
 if (n > 9) {
 ans = -1;
 break;
 }
 while (Num % n == 0) {
 Num /= n;
 fact.push_back(n);
 }
 n++;
 }
 
 sort(fact.begin(), fact.end());
 
 if (n < 10 & ans != -1)
 {
 ans = 0;
 for (int i = 0; i < fact.size(); i++) {
 //ans += fact.at(i) * (i*10);
 cout << fact[i];
 }
 }
 
 
 //cout << ans;
 }
Hey! I solved this problem and here are some test that you may check for you solution:
 0->10
 1->1
 2->2
 3->3
 4->4
 5->5
 6->6
 7->7
 8->8
 9->9
 10->25
 11->-1
 12->26
 13->-1
 14->27
 15->35
 16->28
 17->-1
 18->29
 19->-1
 20->45
 21->37
 22->-1
 23->-1
 24->38
 25->55
 26->-1
 27->39
 28->47
 29->-1
 30->56
 31->-1
 32->48
 33->-1
 34->-1
 35->57
 36->49
 37->-1
 38->-1
 39->-1
 40->58
 41->-1
 42->67
 43->-1
 44->-1
 45->59
 46->-1
 47->-1
 48->68
 49->77
 50->255
 51->-1
 52->-1
 53->-1
 54->69
 55->-1
 56->78
 57->-1
 58->-1
 59->-1
 60->256
 61->-1
 62->-1
 63->79
 64->88
 65->-1
 66->-1
 67->-1
 68->-1
 69->-1
 70->257
 71->-1
 72->89
 73->-1
 74->-1
 75->355
 76->-1
 77->-1
 78->-1
 79->-1
 80->258
 81->99
 82->-1
 83->-1
 84->267
 85->-1
 86->-1
 87->-1
 88->-1
 89->-1
 90->259
 91->-1
 92->-1
 93->-1
 94->-1
 95->-1
 96->268
 97->-1
 98->277
 99->-1
 100->455
 
 Good Luck!
 I have checked for my solution. All done. But I have "Wrong answer" at test 8..... try this test:732421875
 result must be:
 3555555555555
 and this:
 0
 (result: 10)
 
 1
 (result: 1)
 
 Edited by author 15.06.2011 14:32
Shouldn't the test value for
 1 be 11 and so on for single digit numbers?
 
 
 Edited by author 17.08.2020 15:23
 
 Edited by author 17.08.2020 15:23
 
 Edited by author 17.08.2020 15:23
what will the output if
 input = 1 or 0 and why?
 if n=0 then q=10if n=1 then q=1
 Should be 11 though, I don't know why authors decided on 1. The solution requires a product of digits. 1 by itself isn't a product at all.
 Edited by author 19.05.2020 18:51
This problem can be solved using greedy technic. Method is to divide the given number from 9 to 2. Each time we will continue to divide and update the number as we go. We will keep dividing N with the same number utill its impossible to do so.And for each division we will save the number which was divisible by given number. And by "save" i mean pushing the number in a stack or a in a vector or an array. If you are using other than stack you might print out the numbers in a reverse manner.  And when we are getting "-1"? I already wrote that, we keep updating the number. so after we pass the 9 to 2 loop, we should be left with a value of 1 in the variable N ( given number ). Incase N!=1 we are just printing "-1".  For the case N=1 or N=0? for the case 1 you should just print "1" and for the case 0 print "10", we can not print 01 since this refers to number, 1.  If you have problem understanding what i have just written or for better understanding, give this a go : https://ideone.com/709cog Edited by author 21.02.2020 00:34 Edited by author 21.02.2020 00:38 Edited by author 21.02.2020 00:41I have tried everything.
 Here are some testcases from my algorithm:
 0: 10
 1: 1
 2: 2
 3: 3
 4: 4
 5: 5
 6: 6
 7: 7
 8: 8
 9: 9
 10: 25
 12: 26
 14: 27
 15: 35
 16: 28
 18: 29
 20: 45
 21: 37
 24: 38
 25: 55
 27: 39
 28: 47
 30: 56
 
 Some big numbers:
 16859136: 267778888
 16875000: 3555555589
 16934400: 355778889
 16941456: 277777789
 17006112: 48999999
 17010000: 555567899
 17146080: 256778999
 17150000: 1555557778
 17203200: 155788888
 17210368: 177777888
 17222625: 355579999
 17280000: 555568889
 17287200: 455777789
 17294403: 177777777
 17360406: 67799999
 17364375: 555577799
 17418240: 256788899
 17496000: 355588999
 17500000: 4555555578
 17503290: 257777999
 17561600: 455777888
 17578125: 5555555559
 17635968: 67889999
 17640000: 555577889
 17647350: 556777777
 17694720: 256888889
 17714700: 255699999
 17718750: 2555555799
 
 long long int minimoentero3(long int num)
 {
 long long int nf=result;
 return nf;
 }
 
 
 int main()
 {
 long int n;
 cin >> n;
 
 cout<<minimoentero3(n); <- Here the result is sent.
 }
 
 Edited by author 26.10.2017 18:28
 test17294403: 177777777
 
 17294403 != 177777777 (5764801)
 also
 77777777 < 177777777
 
 right answer for this test 377777777
Factorize (in 1..9 figures) the N and then reduce the resulting number of figures. For each i = 9 to 2, repeatedly divide n by i until it cannot be further divided or the list of numbers from 9 to 2 gets finished. Also, in the process of division push each digit i onto the stack which divides n completely. After the above process gets completed check whether n == 1 or not. If not, then print “-1”, else form the number k using the digits from the stack containing the digits in the same sequence as popped from the stack 
 Edited by moderator 23.08.2020 01:12
 Did you try some big prime number? Like 777777773. | 
 | 
|