Pagini recente » Cod sursa (job #1686492) | Cod sursa (job #1724539) | Cod sursa (job #1437550) | Cod sursa (job #2915116) | Cod sursa (job #3332326)
#include <bits/stdc++.h>
using namespace std;
float score = 0;
void result(const char* msg, float pts) {
//"{score}" to stdout
//"{message}" to stderr
// score is a float between 0 and 1
printf("%f", pts);
fprintf(stderr, "%s", msg);
exit(0);
}
void Assert(bool cond, string str) {
if (!cond)
result(str.c_str(), 0);
}
void Success(float pts, string str) {
result(str.c_str(), pts);
}
ifstream out, ok, in;
int main(int argc, char* argv[]) {
string message;
in.open(argv[1]); // test input; assumed to be valid
ok.open(argv[2]); // correct output
out.open(argv[3]); // user output
int nrdiv1 = 0, nrdiv2 = 0;
unsigned long long val = 0;
ok >> nrdiv1;
out >> nrdiv2 >> val;
int nrdiv = 0;
for (unsigned long long d = 1; d * d <= val; d++){
if (val % d == 0){
nrdiv++;
if (d * d < val)
nrdiv++;
}
}
if (nrdiv1 == nrdiv2 && nrdiv1 == nrdiv){
score += 1;
message += "Corect";
}
else if (nrdiv1 == nrdiv2 && nrdiv1 != nrdiv){
message += "Prima cerință este corectă, dar a doua este incorectă!";
score += 0.5;
}
else{
message += "Incorect";
}
Success(score, message);
}