SGU 105 Div 3

找规律

1 12 123 1234 12345 123456 1234567 12345678 123456789
  Y  Y    Y Y   Y Y

如上表规律。每三个,第一个不是,后两个是。

所以 答案=N 包含的完整周期(不包含N) * 2 + N所在周期的位置-1

就是

(n-1)/3*2+(n%3==0?3:n%3)-1  更简洁的表示方式: n/3*2+(n%3)/2

完整代码如下

SGU 105 Div 3
/*************************************************************************
    > File Name:    sgu105.cpp
    > Author:       Shine
    > Created Time: 2013-05-06 上午 11:57:12
    > QuestionType: 规律
    > Way: 找规律
    > Submit: 1WA(表达不正确,没验证) 1AC
    > Gain: (int)形式的* / 运算, 结果与先后顺序有关
    > Experience: 提交不要随意,嗯,至少验证验证。
 ************************************************************************/
#include <cstdio>

int main() {
    int n;
    while (scanf("%d", &n)!=EOF) {
        printf("%d\n", (n-1)/3*2+(n%3==0?3:n%3)-1);
    }
    return 0;
}

 

posted on 2013-05-06 12:20  ShineCheng  阅读(147)  评论(0编辑  收藏  举报

导航