第一行输入整数
,表示测试用例数量。
随后
行,每行一个数字串
,长度
,保证所有用例数字串
的总长度
。
对每个用例输出 ``
`` 或 ``
``(大写),表示是否存在操作序列使得最终数字能被
整除。
9 123 322 333333333333 9997 5472778912773 1234567890 23 33 52254522632
NO YES YES NO NO YES NO YES YES
在第一组样例中,从整数中只能得到
、
、
和
,它们都不能被
整除。
在第二组样例中,需要将第二个数字替换为它的平方,那么就等于
。
在第三组样例中,整数已经可以被整除。
#include <stdio.h>
#include <string.h>
int main() {
int t;
scanf("%d",&t);
while(t--){
char n[100005];
scanf("%s",n);
long long sum=0;
int len=strlen(n),num2=0,num3=0,flag=0;
for(int i=0;i<len;i++){
sum+=n[i]-'0';
if(n[i]=='2'){
num2++;
}
else if(n[i]=='3'){
num3++;
}
}
if(sum%9==0){
printf("YES\n");
}
else{
flag=0;
for(int i=0;i<=num2;i++){
for(int j=0;j<=num3;j++){
if((sum+i*2+j*6)%9==0){
printf("YES\n");
flag=1;
break;
}
}
}
if(flag==0){
printf("NO\n");
}
}
}
return 0;
} 这哪有问题呀 一个用例都没过😭😭救救孩子
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
int t;
scanf("%d",&t);
while(t--){
char *str = (char*)malloc(100001 * sizeof(char));
scanf("%s",str);
int length = strlen(str);
int num2 = 0;
int num3 = 0;
int sum = 0;
for(int i = 0; i < length; i++){
int temp = str[i] - '0';
sum += temp;
if(temp == 2){
num2++;
}
if(temp == 3){
num3++;
}
}
int flag = 0;
for(int i = 0; i <= num2; i++){
if(flag == 1)break;
for(int j = 0; j <= num3; j++){
int ans = sum + i * 2 + j * 6;
if(ans % 9 == 0){
flag = 1;
printf("YES\n");
break;
}
}
}
if(flag == 0){
printf("NO\n");
}
free(str);
}
}