某天,诺诺看到三七二十一(3721)数,觉得很神奇,这种数除以3余2,而除以7则余1。例如8是一个3721数,因为8除以3余2,8除以7余1。现在给出两个整数a、b,求区间[a,b]中的所有3721数,若区间内不存在3721数则输出“none”。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入两个整数a,b(1≤a输出格式:
对于每组测试,在一行上输出区间[a,b]中所有的3721数,每两个数据之间留一个空格。如果给定区间不存3721数,则输出“none”(引号不必输出)。
输入样例:
2
1 7
1 100
输出样例:
none
8 29 50 71 92
#include
main()
{
int t,a,b,i=1,p=0;
scanf("%d",&t);
for(int i=1;i<=t;i++)
{
scanf("%d %d",&a,&b);
for(int j=a;j<=b;j++)
{
if(j%3==2&&j%7==1)
{
if(p==0)
printf("%d",j);
else printf(" %d",j);
p++;
}
}
printf("\n");
if(p==0)
printf("none\n");
}
return 0;
}
回答:你这个小傻瓜,就不知道先把数据保存起来,到时候挨个取出来不就是了嘛;
#include <stdio.h>
#include <stdlib.h>
void cal(int a, int b)
{
int p = 0;
for (int j = a; j <= b; j++)
{
if (j % 3 == 2 && j % 7 == 1)
{
if (p == 0)
printf("%d", j);
else printf(" %d", j);
p++;
}
}
printf("\n");
if (p == 0)
printf("none\n");
}
main()
{
int t, i;
scanf("%d", &t);
int* a = (int*)malloc(t * sizeof(int));
int* b = (int*)malloc(t * sizeof(int));
for (int i = 0; i < t; i++)
{
scanf("%d %d", &a[i], &b[i]);
}
for (int i = 0; i < t; i++)
{
cal(a[i], b[i]);
}
return 0;
}
/*
2
1 7
1 100
*/