Long time no see
This commit is contained in:
@@ -0,0 +1,146 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
int scan(void);
|
||||
unsigned long func(int n);
|
||||
void output(unsigned long sum);
|
||||
void encr(unsigned long sum, char *cpum);
|
||||
int cpumodel(char cpum[]);
|
||||
|
||||
|
||||
int main() {
|
||||
int n;
|
||||
unsigned long isum;
|
||||
char cpum[64];
|
||||
|
||||
cpumodel(cpum);
|
||||
|
||||
printf("Buff: ");
|
||||
if (getchar() == '0') {
|
||||
setbuf(stdin, NULL);
|
||||
printf("buff is off\n");
|
||||
} else {
|
||||
printf("buff is on\n");
|
||||
}
|
||||
while(getchar()!='\n');
|
||||
|
||||
n = scan();
|
||||
if(n == 0) return 0;
|
||||
isum = func(n);
|
||||
|
||||
output(isum);
|
||||
encr(isum,cpum);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int scan(void){
|
||||
int x, n;
|
||||
n = 0;
|
||||
|
||||
printf("Enter num: 1-100 000\nNum: ");
|
||||
|
||||
while(((x = getchar())!='\n') && x != EOF){
|
||||
if((x >= '0') && (x <= '9')){
|
||||
n = (n*10) + (x-'0');
|
||||
}
|
||||
|
||||
else{
|
||||
if(x == '\n');
|
||||
else(printf("Err \"%c\" is not a num.\n",x));
|
||||
while((x = getchar())!='\n')
|
||||
if(x == EOF) return 0;
|
||||
printf("Num: ");
|
||||
n = 0;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(n > 100000){
|
||||
while((x = getchar())!='\n')
|
||||
if(x == EOF) return 0;
|
||||
n = 0;
|
||||
printf("You enter n>100 000 Try again\nNum: ");
|
||||
continue;
|
||||
}
|
||||
|
||||
if(x=='0'&&n<=0){
|
||||
while((x = getchar())!='\n')
|
||||
if(x == EOF) return 0;
|
||||
printf("You num cannot starts with 0. Try again\nNum: ");
|
||||
continue;
|
||||
}
|
||||
|
||||
}
|
||||
if (x == EOF) return 0;
|
||||
return(n);
|
||||
}
|
||||
|
||||
|
||||
unsigned long func(int n){
|
||||
int i;
|
||||
unsigned long sum = 0;
|
||||
unsigned char mem[65536];
|
||||
char data[256 * 1024];
|
||||
|
||||
for(i = 1; i <= n; i++){
|
||||
sum += i;
|
||||
mem[i%65536] = (unsigned char)(i % 256);
|
||||
data[i%(256*1024)] = (unsigned char)((sum + i) % 256U);
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
|
||||
void output(unsigned long sum){
|
||||
int i = 0;
|
||||
char buf[20];
|
||||
|
||||
printf("\nresult: ");
|
||||
while(sum > 0){
|
||||
buf[i++] = (char)('0' + (sum % 10));
|
||||
sum /= 10;
|
||||
}
|
||||
while (i-- > 0)
|
||||
putchar(buf[i]);
|
||||
putchar('\n');
|
||||
}
|
||||
|
||||
|
||||
int cpumodel(char cpum[]) {
|
||||
int c, i = 0;
|
||||
printf("\nEnter proc name: ");
|
||||
while ((c = getchar()) != '\n' && c != EOF && i < 64 - 1) {
|
||||
cpum[i++] = (char)c;
|
||||
}
|
||||
cpum[i] = '\0';
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
void encr(unsigned long sum, char *cpum) {
|
||||
char buf[20];
|
||||
int i = 0;
|
||||
int cpu_len = strlen(cpum);
|
||||
|
||||
if (cpu_len == 0) {
|
||||
printf("CPU model is empty!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (sum == 0) {
|
||||
buf[i++] = '0';
|
||||
} else {
|
||||
while (sum > 0) {
|
||||
buf[i++] = '0' + (sum % 10);
|
||||
sum /= 10;
|
||||
}
|
||||
}
|
||||
|
||||
printf("enc result: ");
|
||||
for (int j = i - 1; j >= 0; j--) {
|
||||
int digit = buf[j] - '0';
|
||||
char cpu_char = cpum[(i - 1 - j) % cpu_len];
|
||||
int enc = (digit + (int)cpu_char) % 10;
|
||||
putchar('0' + enc);
|
||||
}
|
||||
putchar('\n');
|
||||
}
|
||||
Reference in New Issue
Block a user