1. PAT A1078最后一个测试点答案错误是因为在找到hashTable 中的空位后,仍然输出了'-'。
#include <cstdio>
#include <algorithm>
#include <math.h>
#include<cstring>
#include <iostream>
#include<vector>
using namespace std;
bool hashTable_[10001] = {false};
int n;
int Tsize;
bool isPrime(int a)
{
if(a <= 1) return false;
for(int i = 2; i <= int(sqrt(a * 1.0)); i++)
{
if(a % i == 0) return false;
}
return true;
}
void hashhash(int a, int Tsize)
{
int inserted_index = a % Tsize;
if(hashTable_[inserted_index] == false)
{
hashTable_[inserted_index] = true;
printf("%d", inserted_index);
}
else
{
int step;
for(step = 1; step < Tsize; step++)
{
inserted_index = (a + step * step) % Tsize;
if(hashTable_[inserted_index] == false)
{
hashTable_[inserted_index] = true;
printf("%d", inserted_index);
break;
}
}
if(step >= Tsize)
printf("-");
}
}
int main()
{
scanf("%d%d", &Tsize, &n);
while (isPrime(Tsize) == false)
{
Tsize++;
}
for(int i = 0; i < n; i++)
{
int inserted_number;
scanf("%d", &inserted_number);
hashhash(inserted_number, Tsize);
if(i != n-1) printf(" ");
}
return 0;
}