제출 #973529

#제출 시각아이디문제언어결과실행 시간메모리
973529AiperiiiPalindrome-Free Numbers (BOI13_numbers)C++14
100 / 100
1 ms600 KiB
#include <bits/stdc++.h> #define int long long #define ff first #define ss second #define pb push_back #define all(x) x.begin(),x.end() using namespace std; signed main(){ ios_base::sync_with_stdio(); cin.tie(0);cout.tie(0); string a,b; cin>>a>>b; int ans=0; int n=a.size(); int m=b.size(); bool ok=1; for(int i=0;i<n;i++){ if(i+1<n && a[i]==a[i+1])ok=0; if(i+2<n && a[i]==a[i+2])ok=0; } if(ok)ans++; if(a!=b){ ok=1; for(int i=0;i<m;i++){ if(i+1<m && b[i]==b[i+1])ok=0; if(i+2<m && b[i]==b[i+2])ok=0; } if(ok)ans++; } // cout<<ans<<"\n"; for(int i=n+1;i<m;i++){ int cnt=1; for(int j=0;j<i;j++){ if(j<=1)cnt*=9; else cnt*=8; } ans+=cnt; } // cout<<ans<<"\n"; if(n<m){ int s=1; string st=a; for(int i=n-1;i>=0;i--){ st.pop_back(); bool ok=1; for(int j=0;j<st.size();j++){ if(j+1<st.size() && st[j]==st[j+1])ok=0; if(j+2<st.size() && st[j]==st[j+2])ok=0; } if(ok){ for(char x=a[i];x<='9';x++){ if(x==a[i])continue; if(i-1>=0 && x==a[i-1])continue; if(i-2>=0 && x==a[i-2])continue; ans+=s; } } if(i>1)s*=8; else s*=9; } s=1; st=b; for(int i=m-1;i>=0;i--){ st.pop_back(); bool ok=1; for(int j=0;j<st.size();j++){ if(j+1<st.size() && st[j]==st[j+1])ok=0; if(j+2<st.size() && st[j]==st[j+2])ok=0; } if(ok){ char c='0'; if(i==0)c='1'; for(char x=b[i];x>=c;x--){ if(x==b[i])continue; if(i-1>=0 && x==b[i-1])continue; if(i-2>=0 && x==b[i-2])continue; ans+=s; } } if(i>1)s*=8; else s*=9; } } else if(a!=b){ int ind=n-1; for(int i=0;i<n;i++){ if(b[i]>a[i]){ ind=i;break; } } int s=1; string st=a; for(int i=n-1;i>=0;i--){ st.pop_back(); bool ok=1; for(int j=0;j<st.size();j++){ if(j+1<st.size() && st[j]==st[j+1])ok=0; if(j+2<st.size() && st[j]==st[j+2])ok=0; } if(i<ind)break; if(ok){ char c='9'; if(i==ind){ c=b[i]; c--; } for(char x=a[i];x<=c;x++){ if(x==a[i])continue; if(i-1>=0 && x==a[i-1])continue; if(i-2>=0 && x==a[i-2])continue; ans+=s; } } if(i>1)s*=8; else s*=9; } s=1; st=b; for(int i=m-1;i>=0;i--){ st.pop_back(); bool ok=1; for(int j=0;j<st.size();j++){ if(j+1<st.size() && st[j]==st[j+1])ok=0; if(j+2<st.size() && st[j]==st[j+2])ok=0; } if(i==ind)break; if(ok){ char c='0'; for(char x=b[i];x>=c;x--){ if(x==b[i])continue; if(i-1>=0 && x==b[i-1])continue; if(i-2>=0 && x==b[i-2])continue; ans+=s; } } if(i>1)s*=8; else s*=9; } } cout<<ans<<"\n"; } /* 123 321 123456789 987654321 */

컴파일 시 표준 에러 (stderr) 메시지

numbers.cpp: In function 'int main()':
numbers.cpp:46:26: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   46 |             for(int j=0;j<st.size();j++){
      |                         ~^~~~~~~~~~
numbers.cpp:47:23: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   47 |                 if(j+1<st.size() && st[j]==st[j+1])ok=0;
      |                    ~~~^~~~~~~~~~
numbers.cpp:48:23: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   48 |                 if(j+2<st.size() && st[j]==st[j+2])ok=0;
      |                    ~~~^~~~~~~~~~
numbers.cpp:67:26: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   67 |             for(int j=0;j<st.size();j++){
      |                         ~^~~~~~~~~~
numbers.cpp:68:23: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   68 |                 if(j+1<st.size() && st[j]==st[j+1])ok=0;
      |                    ~~~^~~~~~~~~~
numbers.cpp:69:23: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   69 |                 if(j+2<st.size() && st[j]==st[j+2])ok=0;
      |                    ~~~^~~~~~~~~~
numbers.cpp:98:26: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   98 |             for(int j=0;j<st.size();j++){
      |                         ~^~~~~~~~~~
numbers.cpp:99:23: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   99 |                 if(j+1<st.size() && st[j]==st[j+1])ok=0;
      |                    ~~~^~~~~~~~~~
numbers.cpp:100:23: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  100 |                 if(j+2<st.size() && st[j]==st[j+2])ok=0;
      |                    ~~~^~~~~~~~~~
numbers.cpp:126:26: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  126 |             for(int j=0;j<st.size();j++){
      |                         ~^~~~~~~~~~
numbers.cpp:127:23: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  127 |                 if(j+1<st.size() && st[j]==st[j+1])ok=0;
      |                    ~~~^~~~~~~~~~
numbers.cpp:128:23: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  128 |                 if(j+2<st.size() && st[j]==st[j+2])ok=0;
      |                    ~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...