zoukankan      html  css  js  c++  java
  • Last Defence (run time error)

    Last Defence
    时间限制:1000 ms | 内存限制:65535 KB
    描述
    Given two integers A and B. Sequence S is defined as follow:
    • S0 = A
    • S1 = B
    • Si = |Si-1 – Si-2| for i ≥ 2
    Count the number of distinct numbers in S .
    输入
    The first line of the input gives the number of test cases, T. T test cases follow. T is about 100000.
    Each test case consists of one line – two space-separated integers A, B. (0 ≤ A, B ≤ 10^18).
    输出
    For each test case, output one line containing “Case #x: y”, where x is the test case number (starting from 1) and y is the number of distinct numbers in S .
    样例输入
    2
    7 4
    3 5
    样例输出
    Case #1: 6
    Case #2: 5
    来源
    Yougth
    我的思路:首先这道题run time error了。。任何两个数,进行题中的运算,得出是一组数,最后肯定是x, x,0,x,x,0,x,x,0……循环的,所以当遇到x,x,0时候就停止,然后把前面的数和x,0进行处理,计算一下一共有多少不同的数。。希望大家帮看一下,这个代码运行没有错误,结果也对。
    #include<iostream>
    #include<algorithm>
    #include<stdio.h>
    #include<cmath>
    using namespace std;
    int a[10000000];
    int main()
    {
    int T,i,j;
    int g=1;
    long long A,B;
    cin>>T;
    while(T--)
    {
    scanf("%lld%lld",&A,&B);
    a[0]=A;
    a[1]=B;
    i=2;
    while(1)
    {
    a[i]=fabs(a[i-1]-a[i-2]);
    a[i+1]=fabs(a[i]-a[i-1]);
    a[i+2]=fabs(a[i+1]-a[i]);
    if(a[i]==a[i+1]&&a[i+2]==0)
    {  a[i+1]=0;
    break;
    }
    i++;
    }
    int n=i+2;
    sort(a,a+i+2);
    for(i=0;i<n-1;i++)
    {
    if(a[i]==a[i+1])
    {
    for(j=i;j<n-1;j++)
    a[j]=a[j+1];
    i--;
    n--;
    }
    }
    printf("Case #%d: %d
    ",g,n);
    g=g+1;
    }
    return 0;
    }

  • 相关阅读:
    .net 日期格式化
    grunt 上手
    设计模式的认识
    顺时针打印矩阵
    WCF 框架运行时类图
    Python闭包详解
    软件用了那些技术
    zoj 1610 Count the Colors(线段树延迟更新)
    快速提高自己的技术的办法?有两个方法
    纯win32实现PNG图片透明窗体
  • 原文地址:https://www.cnblogs.com/NYNU-ACM/p/4236879.html
Copyright © 2011-2022 走看看