#include <math.h>
int prime(long int num){
int i;
for (i = 1; i <= b; i++)
if (num % i == 0)
return 1;
return 0;
}
#include <string.h>
size_t custom_strlen(const char* str) {
return sizeof(str);
}
// TODO: Implement `power of` function
// int custom_pow(int base, int power);
long int custom_pow(int base, int power) {
if (power == 0){
return 1;
}
if (power > 0){
long int a = base, i;
for (i = 2; i <= power; i++)
a = a*base;
return a;
}
return 0;
}
#include <stdlib.h>
#include <stdio.h>
#define ERR_ARGS_COUNT (-1)
#define ERR_WRONG_FLG (-2)
#define TST_FOO_FIX 1
#define TST_FOO_IMPL 2
#define TST_MOD_IMPL 3
/* NOTE(stitaevskiy):
* We use `atoi` function just for simplification and code reducing.
* This function doesn't report conversation errors.
* For safety program we recommend using `strtol` and its analogs.
* (See `man atoi` and `man strtol` for more info).
*
* const char str_num[] = "1234";
* char* end = NULL;
* int val = (int) strtol(str_num, &end, 0);
* if (end != '\0') {
* //ERROR
* }
*
* */
int main(int argc, const char** argv) {
if (argc > 3) {
return ERR_ARGS_COUNT;
}
char *end = NULL;
int test_case
= (int) strtol (argv
[1], &end
, 10); if (*end != '\0') {
printf("Error: number of case is not found\n"); return 0;
}
const char* data;
data = argv[2];
switch (test_case) {
case TST_FOO_FIX: {
size_t res = custom_strlen(data);
break;
}
case TST_FOO_IMPL: {
if (argc != 4){
printf("The number of input parameters is exceeded\n"); return ERR_ARGS_COUNT;
}
/* Comment to prevent `unused parameter` error
int base = atoi(data);
int pow = atoi(argv[3]);
int res = custom_pow(base, pow); // TODO: Implement me
printf("%i\n", res);
*/
char *end1, *end2;
end1=NULL;
end2=NULL;
int base
= (int) strtol (argv
[2], &end1
, 10); if ((*end1 != '\n') && (*end2 != '\n')) {
}
else {
long int res
= custom_pow
(base
,pow); }
break;
}
case TST_MOD_IMPL: {
if (argc != 3) {
printf("The number of input parameters is exceeded\n"); }
// Comment for prevent `unused variable` error
// int num = atoi(data);
char *end1;
end1 = NULL;
int num
= (int) strtol (argv
[2], &end1
,0); if (*end1 != '\n')
else {
int pri = prime (num);
}
// TODO: Print to stdout `1` if `num` is prime number and `0` otherwise
// This function MUST be implemented in
// a separate C-module (not in `main` or `utils` module)
break;
}
default: {
return ERR_WRONG_FLG;
}
}
return 0;
}
I2luY2x1ZGUgPG1hdGguaD4KCmludCBwcmltZShsb25nIGludCBudW0pewoJaW50IGk7CglpbnQgYj1zcXJ0KG51bSkrMTsKCWZvciAoaSA9IDE7IGkgPD0gYjsgaSsrKQoJCWlmIChudW0gJSBpID09IDApCgkJCXJldHVybiAxOwoJcmV0dXJuIDA7Cn0KCiNpbmNsdWRlIDxzdHJpbmcuaD4KCnNpemVfdCBjdXN0b21fc3RybGVuKGNvbnN0IGNoYXIqIHN0cikgewoJcmV0dXJuIHNpemVvZihzdHIpOwp9Ci8vIFRPRE86IEltcGxlbWVudCBgcG93ZXIgb2ZgIGZ1bmN0aW9uCi8vIGludCBjdXN0b21fcG93KGludCBiYXNlLCBpbnQgcG93ZXIpOwpsb25nIGludCBjdXN0b21fcG93KGludCBiYXNlLCBpbnQgcG93ZXIpIHsKCWlmIChwb3dlciA9PSAwKXsKCQlyZXR1cm4gMTsKCX0KCWlmIChwb3dlciA+IDApewoJCWxvbmcgaW50IGEgPSBiYXNlLCBpOwoJCWZvciAoaSA9IDI7IGkgPD0gcG93ZXI7IGkrKykKCQkJYSA9IGEqYmFzZTsKCQlyZXR1cm4gYTsKCX0KCXJldHVybiAwOwp9CgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxzdGRpby5oPgoKI2RlZmluZSBFUlJfQVJHU19DT1VOVCAoLTEpCiNkZWZpbmUgRVJSX1dST05HX0ZMRyAoLTIpCgojZGVmaW5lIFRTVF9GT09fRklYICAgICAxCiNkZWZpbmUgVFNUX0ZPT19JTVBMICAgIDIKI2RlZmluZSBUU1RfTU9EX0lNUEwgICAgMwoKCi8qIE5PVEUoc3RpdGFldnNraXkpOgogKiBXZSB1c2UgYGF0b2lgIGZ1bmN0aW9uIGp1c3QgZm9yIHNpbXBsaWZpY2F0aW9uIGFuZCBjb2RlIHJlZHVjaW5nLgogKiBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgcmVwb3J0IGNvbnZlcnNhdGlvbiBlcnJvcnMuCiAqIEZvciBzYWZldHkgcHJvZ3JhbSB3ZSByZWNvbW1lbmQgdXNpbmcgYHN0cnRvbGAgYW5kIGl0cyBhbmFsb2dzLgogKiAoU2VlIGBtYW4gYXRvaWAgYW5kIGBtYW4gc3RydG9sYCBmb3IgbW9yZSBpbmZvKS4KICoKICogY29uc3QgY2hhciBzdHJfbnVtW10gPSAiMTIzNCI7CiAqIGNoYXIqIGVuZCA9IE5VTEw7CiAqIGludCB2YWwgPSAoaW50KSBzdHJ0b2woc3RyX251bSwgJmVuZCwgMCk7CiAqIGlmIChlbmQgIT0gJ1wwJykgewogKiAgICAgLy9FUlJPUgogKiB9CiAqCiAqICovCgppbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhcioqIGFyZ3YpIHsKICAgCWlmIChhcmdjID4gMykgewogICAgICAgIAlyZXR1cm4gRVJSX0FSR1NfQ09VTlQ7CiAgICAJfQogICAgCWNoYXIgKmVuZCA9IE5VTEw7CiAgICAJaW50IHRlc3RfY2FzZSA9IChpbnQpIHN0cnRvbCAoYXJndlsxXSwgJmVuZCwgMTApOwoJaWYgKCplbmQgIT0gJ1wwJykgewoJCXByaW50ZigiRXJyb3I6IG51bWJlciBvZiBjYXNlIGlzIG5vdCBmb3VuZFxuIik7CgkJcmV0dXJuIDA7CQoJfQogICAgCWNvbnN0IGNoYXIqIGRhdGE7CiAgICAJZGF0YSA9IGFyZ3ZbMl07CiAgICAJc3dpdGNoICh0ZXN0X2Nhc2UpIHsKICAgICAgICAJY2FzZSBUU1RfRk9PX0ZJWDogewogICAgICAgICAgICAJCXNpemVfdCByZXMgPSBjdXN0b21fc3RybGVuKGRhdGEpOwoJCQlwcmludGYoIiV6dVxuIiwgcmVzKTsKICAgICAgICAgICAgCQlicmVhazsKICAgICAgICAJfQogICAgICAgIAljYXNlIFRTVF9GT09fSU1QTDogewogICAgICAgICAgICAJCWlmIChhcmdjICE9IDQpewoJCQkJcHJpbnRmKCJUaGUgbnVtYmVyIG9mIGlucHV0IHBhcmFtZXRlcnMgaXMgZXhjZWVkZWRcbiIpOwoJCQkJcmV0dXJuIEVSUl9BUkdTX0NPVU5UOwoJCQl9CiAgICAgICAgICAgIAkJLyogQ29tbWVudCB0byBwcmV2ZW50IGB1bnVzZWQgcGFyYW1ldGVyYCBlcnJvcgogICAgICAgICAgICAJCWludCBiYXNlID0gYXRvaShkYXRhKTsKICAgICAgICAgICAgCQlpbnQgcG93ID0gIGF0b2koYXJndlszXSk7CiAgICAgICAgICAgIAkJaW50IHJlcyA9IGN1c3RvbV9wb3coYmFzZSwgcG93KTsgICAgLy8gVE9ETzogSW1wbGVtZW50IG1lCiAgICAgICAgICAgIAkJcHJpbnRmKCIlaVxuIiwgcmVzKTsKICAgICAgICAgICAgCQkqLwoJCQljaGFyICplbmQxLCAqZW5kMjsKCQkJZW5kMT1OVUxMOwoJCQllbmQyPU5VTEw7CQoJCQlpbnQgYmFzZSA9IChpbnQpIHN0cnRvbCAoYXJndlsyXSwgJmVuZDEsIDEwKTsKCQkJaW50IHBvdyA9IChpbnQpIHN0cnRvbCAoYXJndlszXSwgJmVuZDIsIDEwKTsKCQkJaWYgKCgqZW5kMSAhPSAnXG4nKSAmJiAoKmVuZDIgIT0gJ1xuJykpIHsKCQkJCXByaW50ZigiREFUQSBJTlBVVCBFUlJPUiIpOwoJCQl9CgkJCWVsc2UgewoJCQkJbG9uZyBpbnQgcmVzID0gY3VzdG9tX3BvdyhiYXNlLHBvdyk7CgkJCQlwcmludGYoIiVsZFxuIiwgcmVzKTsKCQkJfQogICAgICAgICAgICAJCWJyZWFrOwogICAgICAgIAl9CiAgICAgICAgCWNhc2UgVFNUX01PRF9JTVBMOiB7CgkJCWlmIChhcmdjICE9IDMpIHsKCQkJCXByaW50ZigiVGhlIG51bWJlciBvZiBpbnB1dCBwYXJhbWV0ZXJzIGlzIGV4Y2VlZGVkXG4iKTsKCQkJfQogICAgICAgICAgICAJCS8vIENvbW1lbnQgZm9yIHByZXZlbnQgYHVudXNlZCB2YXJpYWJsZWAgZXJyb3IKICAgICAgICAgICAgCQkvLyBpbnQgbnVtID0gYXRvaShkYXRhKTsKCQkJY2hhciAqZW5kMTsKCQkJZW5kMSA9IE5VTEw7CgkJCWludCBudW0gPSAoaW50KSBzdHJ0b2wgKGFyZ3ZbMl0sICZlbmQxLDApOwoJCQlpZiAoKmVuZDEgIT0gJ1xuJykKCQkJCXByaW50ZigiREFUQSBJTlBVVCBFUlJPUiIpOwoJCQllbHNlIHsKCQkJCWludCBwcmkgPSBwcmltZSAobnVtKTsKCQkJCXByaW50ZigiJWQiLCBwcmkpOwoJCQl9CiAgICAgICAgICAgIAkJLy8gVE9ETzogUHJpbnQgdG8gc3Rkb3V0IGAxYCBpZiBgbnVtYCBpcyBwcmltZSBudW1iZXIgYW5kIGAwYCBvdGhlcndpc2UKICAgICAgICAgICAgCQkvLyBUaGlzIGZ1bmN0aW9uIE1VU1QgYmUgaW1wbGVtZW50ZWQgaW4KICAgICAgICAgICAgCQkvLyBhIHNlcGFyYXRlIEMtbW9kdWxlIChub3QgaW4gYG1haW5gIG9yIGB1dGlsc2AgbW9kdWxlKQogICAgICAgICAgICAJCWJyZWFrOwogICAgICAgIAl9CiAgICAgICAgCWRlZmF1bHQ6IHsKICAgICAgICAgICAgCQlyZXR1cm4gRVJSX1dST05HX0ZMRzsKICAgICAgICAJfQogICAgCX0KICAgIAlyZXR1cm4gMDsKfQ==