NYOJ 密码发生器(蓝桥杯)

时间:2021-11-04 20:04:03

点击打开链接

无语了,这个题刚开始陷入了谜团,“怎样按6的倍数取字符”。。。其实直接按下标mod6 就可以得到下标是6的倍数的位置

代码如下:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int fun(int n){//将数字每一位的数值相加
int sum=0;
while (n>0){
sum += n % 10;
n /= 10;
}
return sum;
}
int main(){
int n;
char str[105];
int a[6];
scanf("%d", &n);
getchar();
while (n--){
memset(a, 0, sizeof(a));
scanf("%s", str);
for (int i = 0; i < (int)strlen(str); i++){
a[i % 6] += str[i];//每一位与6的倍数的位的值相加
}
for (int i = 0; i < 6; i++){
while (a[i] >= 10){//不断循环,知道第i位的的值为一位数值时停止循环,执行数值相加函数
a[i]=fun(a[i]);
}
}
for (int i = 0; i < 6; i++)
printf("%d", a[i]);
printf("\n");
}
}