一道简单题
Problem Description
当时题目是这样描述的:现有“★”和“☆”共150个,它的排列方式如下:
★☆☆★☆★★☆☆★☆★★……
让你求有多少个黑的五角星。
Input
Output
Sample Input
13 62
Sample Output
7 31
总五角星数 黑五角星数
1 1
2 1
3 1
4 2
5 2
6 3
7 4
8 4
9 4
10 5
11 5
12 6
13 7
这个是循环的,循环节是6,而且每个循环中前三个是一样的,再后面的两个是一样的,后面还剩一个。这三个数它们是递增的,相差为1。还有一个规律是每隔一个循环节的数也是等差数列1,4,7.它们的公差为3.所以就简单了。首先对输入的数n整除6.就得到是过几个循环节了m=n/6。然后对m求余,得到是这个循环节中的第几个数。如果取余是1,2,3,则为m*3+1.取余4,5,则为m*3+2.取余0为m*3+3.#include"stdio.h"
int main()
{
__int64 n,x,y,sum;
while(scanf("%I64d",&n)!=EOF)
{
if(n==0)
{
printf("0\n");
continue;
}
x=n/6;
sum=1+x*3;
y=n%6;
if(y==0)
sum=sum-1;
if(y>0&&y<=3)
sum=sum;
if(y==4)
sum+=1;
if(y==5)
sum+=1;
printf("%I64d\n",sum);
}
return 0;
}