Pagini recente » Cod sursa (job #3265010) | Cod sursa (job #2934042) | Cod sursa (job #2636217) | Cod sursa (job #1082191) | Cod sursa (job #1429830)
#include <fstream>
#define DIM 5000010
using namespace std;
ifstream fin ("pascal.in" );
ofstream fout("pascal.out");
int N, D1[DIM], D2[DIM], S, i, nr, val;
inline void Divide(int D[], int st, int dr, int S){
int K = dr - st + 1;
if(K == 1){
D[st] = 1;
D[dr] = 1;
return;
}
int val = 1;
while(val * S < K)
val *= S;
val = K - val;
Divide(D, st, st+val-1, S);
Divide(D, dr-val+1, dr, S);
return;
}
inline void CodeExpert(){
fin >> N >> S; N ++;
if(S == 6){
Divide(D1, 1, N, 2);
Divide(D2, 1, N, 3);
for(i = 1; i <= N; i ++)
if(!D1[i] && !D2[i])
nr ++;
fout << nr;
}
else{
Divide(D1, 1, N, S);
for(i = 1; i <= N; i ++)
if(!D1[i])
nr ++;
if(S == 4){
val = 1;
i = 0;
while(val * S < N)
val *= S;
nr -= N - val;
}
fout << nr;
}
return;
}
int main(){
CodeExpert();
return 0;
}