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-;
const int SZ=,INF=0x7FFFFFFF;
typedef long long lon;
int arr[SZ]; bool chk(const vector<int> &vct,int mod)
{
if(mod==||mod==||mod==)return ;
else if(mod==||mod==)return (vct.size()-)%mod==;
else if(mod==)return (vct.size()-)%==;
else
{
int res=;
for(int i=;i<vct.size();++i)
{
res=res*+vct[i];
res%=mod;
}
return res==;
}
} int main()
{
std::ios::sync_with_stdio();
//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,);
for(int i=;i<;++i)
{
vct[n-]=i;
if(chk(vct,i))arr[i]=;
}
int res=;
for(int i=;i<;++i)
{
if(arr[i]&&arr[i+])++res;
}
cout<<res<<endl;
}
return ;
}
上一篇:无需密码通过scp命令+key的方式实现文件传输


下一篇:mysql设置远程訪问数据库的多种方法