diff --git a/CWOJ/1193_冰封.cpp b/CWOJ/1193_冰封.cpp new file mode 100644 index 0000000..736a4e3 --- /dev/null +++ b/CWOJ/1193_冰封.cpp @@ -0,0 +1,42 @@ +#include +#include +#include +#define LL long long + +LL fast_plus(LL a, LL b, LL m) { + LL ret = 0; + while(b) { + if(b & 1) + ret = (ret + a) % m; + b >>= 1; + a = (a << 1) % m; + } + return ret; +} + +LL fast_pow(LL a, LL b, LL m) { + LL ret = 1; + while(b) { + if(b & 1) + ret = fast_plus(ret, a, m); + b >>= 1; + a = fast_plus(a, a, m); + } + return ret; +} + +int main() { + int i; + LL n, m, t, aa = 0; + char a[10005]; + std::cin>>a>>n>>m; + for(i = 0; i < strlen(a); i++) + aa = (aa * 10 + a[i] - '0') % m; + if(n == 1) { + std::cout< +#include +#include +typedef long long LL; + +#define _CPP_ +#ifdef _CPP_ +#include +using namespace std; +#endif + +int isp(int a, int p[10000], size_t s) { + if(!a || a == 1) return 0; + int i; + for(i = 0; i < s; i++) + if(!(a % p[i])) + return 0; + return 1; +} + +int main(int argc, char *argv[]) { + int i, cnt, p[10000], ps = 0; +// memset(p, 0, sizeof(p)); + for(i = 2; i < 35000; i++) { + if(isp(i, p, ps)) { + p[ps] = i; + ps++; + } + } + scanf("%d", &cnt); + while(cnt--) { + int i, l = 0, g = 1, z = 1, f = 0, s = 0, t = 1, started = 0; + int *c = (int*) malloc (ps * sizeof(int)); + memset(c, 0, ps); + LL a, o; +#ifdef _CPP_ + cin>>a; +#else + scanf("%lld", &a); +#endif + o = a; + for(i = 0; i < ps; i++) { + if(a == 1) break; + if(!(a % p[i]) && p[i] != o || a == p[i]) { + if(o == p[i] && o != 2) z = 0; + a /= p[i]; + c[i]++; + i--, l++; + } + } + s = ++i; + for(i = 0; i < s; i++) { + if(c[i] > 1) g = 0; + t *= c[i] + 1; + if(c[i]) started++; + if(started && !c[i]) z = 0; + } + free(c); + if(t % 3) f++; +// printf("%s%s%s%s\n", g ? "G" : "", z ? "Z" : "", f ? "F" : "", +// (!g && !z && !f) ? "FUCK" : ""); + + if(t % 3) f++; + if(g) printf("G"); + if(z) printf("Z"); + if(f) printf("F"); + if(!g && !z && !f) printf("FUCK"); + printf("\n"); + } + return 0; +} diff --git a/CWOJ/2198-re_冰封.c b/CWOJ/2198-re_冰封.c new file mode 100644 index 0000000..b9e9164 --- /dev/null +++ b/CWOJ/2198-re_冰封.c @@ -0,0 +1,70 @@ +#include +#include +#include + +void resort(char *a, int size) { + int i; + for(i = 0; i < size / 2; i++) { + char c = a[i]; + a[i] = a[size - 1 - i]; + a[size - 1 - i] = c; + } +} +int max(int a, int b) { return a > b ? a : b; } +int main() { + char *a, *b; + char c[700]; + int i, mark = 0, a0 = 0, b0 = 0; + a = (char* ) malloc (700 * sizeof(char)); + b = (char* ) malloc (700 * sizeof(char)); + for(i = 0; i < sizeof(c); i++) + c[i] = '0'; + scanf("%s%s", a, b); + if(a[0] == '-') { + a0 = 1; + a++; + } + if(b[0] == '-') { + b0 = 1; + b++; + } + resort(a, strlen(a)); + resort(b, strlen(b)); + int size = max(strlen(a), strlen(b)); + for(i = 0; i < size; i++) { + if(i < strlen(a)) { + if(!(a0 == b0) && a0) + c[i] -= a[i] - '0'; + else + c[i] += a[i] - '0'; + } + if(i < strlen(b)) { + if(!(a0 == b0) && b0) + c[i] -= b[i] - '0'; + else + c[i] += b[i] - '0'; + } + c[i] += mark; + mark = 0; + if(c[i] > '9') { + c[i] -= 10; + mark = 1; + } + if(c[i] < '0') { + c[i] += 10; + mark = -1; + } + } + for(i = size; i > 0; i--) + if(c[i] != '0') break; + if(mark < 0 || a0 && b0) printf("-"); + if(mark > 0) printf("1"); + for(; i >= 0; i--) { + if(mark < 0 && (a0 != b0)) + c[i] = '9' - (c[i] - '0'); + printf("%c", c[i]); + } + free(a); + free(b); + return 0; +}