CSES - KILO 2016 2/5 - Results
Submission details
Task:Lucky numbers
Sender:z
Submission time:2016-09-13 17:37:58 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.06 sdetails
#2ACCEPTED0.05 sdetails
#3ACCEPTED0.06 sdetails
#4ACCEPTED0.05 sdetails
#5ACCEPTED0.05 sdetails
#6ACCEPTED0.05 sdetails
#7ACCEPTED0.05 sdetails
#8ACCEPTED0.05 sdetails
#9ACCEPTED0.05 sdetails
#10ACCEPTED0.05 sdetails
#11ACCEPTED0.05 sdetails
#12ACCEPTED0.06 sdetails
#13ACCEPTED0.06 sdetails
#14ACCEPTED0.06 sdetails
#15ACCEPTED0.05 sdetails
#16ACCEPTED0.06 sdetails
#17ACCEPTED0.05 sdetails
#18ACCEPTED0.05 sdetails
#19ACCEPTED0.05 sdetails
#20ACCEPTED0.06 sdetails

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:19:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i=1; i<s.size(); ++i){
                          ^

Code

#include <iostream>
using namespace std;
string s;


int md[101][10][7];

int main(){
  for (int i=0; i<101; ++i) for (int j=0; j<10; ++j) for (int k=0; k<7; ++k) md[i][j][k]=1222333444;
  
  cin >> s;
  for (int d=1; d<=9; ++d){
    if (s[0]==d+'0'){
      md[0][d][d%7]=0;
    }else{
      md[0][d][d%7]=1;      
    }
  }
  for (int i=1; i<s.size(); ++i){
    for (int d=0; d<=9; ++d){
      int p=1;
      if (s[i]==d+'0') p=0;
      for (int e=0; e<=9; ++e){
	if (e+d==0 || e+d==7 || e+d==14){
	  for (int m=0; m<7; ++m){
	    md[i][d][(10*m+d)%7]=min(md[i][d][(10*m+d)%7], md[i-1][e][m]+p);
	  }
	}
      }
    }
  }
  int ans=1222333444;
  for (int d=0; d<=9; ++d){
    ans=min(ans, md[s.size()-1][d][0]);
  }
  cout << ans << "\n";
}

Test details

Test 1

Verdict: ACCEPTED

input
932

correct output
1

user output
1

Test 2

Verdict: ACCEPTED

input
622897

correct output
4

user output
4

Test 3

Verdict: ACCEPTED

input
147656

correct output
3

user output
3

Test 4

Verdict: ACCEPTED

input
3452

correct output
4

user output
4

Test 5

Verdict: ACCEPTED

input
788431492

correct output
7

user output
7

Test 6

Verdict: ACCEPTED

input
989266495048717272261061594909...

correct output
48

user output
48

Test 7

Verdict: ACCEPTED

input
656115984810304444763175

correct output
18

user output
18

Test 8

Verdict: ACCEPTED

input
821785741859753883189643338604...

correct output
49

user output
49

Test 9

Verdict: ACCEPTED

input
989368021051

correct output
8

user output
8

Test 10

Verdict: ACCEPTED

input
850646258628472406299081311034...

correct output
75

user output
75

Test 11

Verdict: ACCEPTED

input
905529028380409196254499360502...

correct output
73

user output
73

Test 12

Verdict: ACCEPTED

input
910487086247939283017891549257...

correct output
71

user output
71

Test 13

Verdict: ACCEPTED

input
819648081022975646379749170608...

correct output
74

user output
74

Test 14

Verdict: ACCEPTED

input
534150835659907637615065081226...

correct output
76

user output
76

Test 15

Verdict: ACCEPTED

input
903033794991942065956114372733...

correct output
78

user output
78

Test 16

Verdict: ACCEPTED

input
737347217956895521599162105321...

correct output
71

user output
71

Test 17

Verdict: ACCEPTED

input
826360887089984268785983647159...

correct output
73

user output
73

Test 18

Verdict: ACCEPTED

input
224396467462996787526747118066...

correct output
66

user output
66

Test 19

Verdict: ACCEPTED

input
162181307721411363866352372656...

correct output
70

user output
70

Test 20

Verdict: ACCEPTED

input
885185290760073270713376396959...

correct output
73

user output
73