sgu 169 Numbers
Posted gaudar
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sgu 169 Numbers相关的知识,希望对你有一定的参考价值。
题意:n和n+1同时被数位乘积整除的k位数个数。
假如a是237,b是238。由于个位以前的数一样。那么对于2,如果a%2==0,b%2就!=0,如果a%3==0,b%3就!=0。因此个位以前的数只能是1.再列举个位的情况。
#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <vector> #include <iomanip> #include <cstring> #include <map> #include <queue> #include <set> #include <cassert> #define mkp make_pair using namespace std; const double EPS=1e-8; const int SZ=20,INF=0x7FFFFFFF; typedef long long lon; int arr[SZ]; bool chk(const vector<int> &vct,int mod) { if(mod==1||mod==2||mod==5)return 1; else if(mod==3||mod==9)return (vct.size()-1)%mod==0; else if(mod==6)return (vct.size()-1)%3==0; else { int res=0; for(int i=0;i<vct.size();++i) { res=res*10+vct[i]; res%=mod; } return res==0; } } int main() { std::ios::sync_with_stdio(0); //freopen("d:\1.txt","r",stdin); lon casenum; //cin>>casenum; //for(lon time=1;time<=casenum;++time) { int n; cin>>n; vector<int> vct(n,1); for(int i=1;i<10;++i) { vct[n-1]=i; if(chk(vct,i))arr[i]=1; } int res=0; for(int i=1;i<9;++i) { if(arr[i]&&arr[i+1])++res; } cout<<res<<endl; } return 0; }
以上是关于sgu 169 Numbers的主要内容,如果未能解决你的问题,请参考以下文章