####Combination Lock####
簡述:
兩個密碼,旋轉的密碼盤,給出密碼盤的最大刻度,以及兩個密碼。在旋轉盤的過程中,每個密碼相差兩位之內都可以算作正確。
本來按照密碼,計算正確密碼就好了,不過我用的是算錯誤密碼,然後用所有的密碼減去就好了,不過要注意,如果刻度盤刻度較少不足5個的時候,需要額外考慮,此種特殊情況。
代碼:
#include <stdio.h>
#include <string.h>
#include <math.h>
int lock[2][3];
int n;
int rid();
int main(void)
{
freopen("combo.in", "r", stdin);
freopen("combo.out", "w", stdout);
int i, j, sum = 250;
scanf("%d", &n);
//若給出的刻度範圍不及5;
if(n < 5)sum = 2 * n * n * n;
for(i = 0; i < 2; i++)
for(j = 0; j < 3; j++)
scanf("%d", &lock[i][j]);
sum -= rid();
printf("%d\n", sum);
return 0;
}
int rid()
{
int j;
int c[3], sum = 0;
memset(c, 0, sizeof(c));
for(j = 0; j < 3; j++)
{
int a;
a = lock[0][j] > lock [1][j] ? lock[0][j] - lock [1][j] : lock[1][j] - lock [0][j];
if(a > n / 2)
c[j] = n - a;
else
c[j] = a;
if(c[j] >= 5)
c[j] = 0;
else
{
//若給出的刻度範圍不及5;
if(n < 5)
c[j] = n;
else
c[j] = 5 - c[j];
}
}
for(j = 1, sum = c[0]; j < 3; j++)
sum *= c[j];
return sum;
}