Pagini recente » Cod sursa (job #2933567) | Cod sursa (job #1429426) | Cod sursa (job #803936) | Cod sursa (job #2933539) | Cod sursa (job #1429896)
#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, j;
int A[2000][2000];
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;
int aux = val;
val = K - val;
Divide(D, st, st+val-1, S);
Divide(D, dr-val+1, dr, S);
if(S == 4 && K >= 5)
Divide(D, st + aux / 2 - 1, st + aux / 2 - 1 + val - 1, 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 ++;
fout << nr;
}
return;
}
inline void Test(){
fin >> N;
A[1][1] = 1; fout << "1\n";
for(i = 2; i <= N; i ++){
for(j = 1; j <= i; j ++){
A[i][j] = (A[i-1][j-1] + A[i-1][j]) % 4;
fout << !(A[i][j] == 0) << "";
}
fout << "\n";
}
return;
}
int main(){
//Test();
CodeExpert();
return 0;
}