Pagini recente » Cod sursa (job #2866291) | Cod sursa (job #845196) | Cod sursa (job #2648877) | Cod sursa (job #740246) | Cod sursa (job #1232235)
#include <stdio.h>
#include <malloc.h>
#define X 0
#define Y 1
#define Z 2
#define A 3
#define B 4
#define C 5
#define N 6
#define MAX_MOD 666013
typedef struct _DataSet
{
int nDataSet[7];
int nResult;
} DataSet;
void readDataSets(DataSet*** sParam, int** size)
{
FILE ** input;
input = (FILE**)malloc(sizeof(FILE*));
fopen_s(input, "iepuri.in", "r");
int iter = 0;
int nSize = 0;
fscanf_s(*input, "%d", &nSize);
*sParam = (DataSet**)malloc(nSize * sizeof(DataSet*));
for (iter = 0; iter < nSize; ++iter)
{
(*sParam)[iter] = (DataSet*)malloc(sizeof(DataSet));
int a, b, c, d, e, f, g;
fscanf_s(*input, "%d %d %d %d %d %d %d",
&a, &b, &c, &d, &e, &f, &g
);
((*sParam)[iter])->nDataSet[0] = a;
((*sParam)[iter])->nDataSet[1] = b;
((*sParam)[iter])->nDataSet[2] = c;
((*sParam)[iter])->nDataSet[3] = d;
((*sParam)[iter])->nDataSet[4] = e;
((*sParam)[iter])->nDataSet[5] = f;
((*sParam)[iter])->nDataSet[6] = g;
}
*size = (int*)malloc(sizeof(int));
**size = nSize;
fclose(*input);
}
void printResults(DataSet*** pResult, int nSize)
{
FILE ** output;
output = (FILE**)malloc(sizeof(FILE*));
fopen_s(output, "iepuri.out", "w");
int iter = 0;
for (int iter = 0; iter < nSize; ++iter)
{
fprintf_s(*output, "%d\n", ((*pResult)[iter])->nResult);
}
fclose(*output);
}
void calcResults(DataSet*** sParam, int size)
{
int loop = 0;
int iter = 0;
for (iter = 0; iter < size; ++iter)
{
int pResult = 0;
int n = ((*sParam)[iter])->nDataSet[N] - 3;
int a = ((*sParam)[iter])->nDataSet[A];
int b = ((*sParam)[iter])->nDataSet[B];
int c = ((*sParam)[iter])->nDataSet[C];
int d_1 = ((*sParam)[iter])->nDataSet[X];
int d_2 = ((*sParam)[iter])->nDataSet[Y];
int d_3 = ((*sParam)[iter])->nDataSet[Z];
for (loop = 0; loop <= n; ++loop)
{
pResult = a * d_3 + b * d_2 + c * d_1;
d_1 = d_2;
d_2 = d_3;
d_3 = pResult;
}
((*sParam)[iter])->nResult = d_3 % MAX_MOD;
}
}
int main(int argc, char** argv)
{
int* size = NULL;
DataSet ** dataSet = NULL;
readDataSets(&dataSet, &size);
calcResults(&dataSet, *size);
printResults(&dataSet, *size);
free(*dataSet);
free(dataSet);
free(size);
}