Java面试题(1-9999999)

  1. 编写一个程序,由键盘输入n的值,求s=1+(1+4)+(1+4+7)+...+(1+4+7+...+n)的值

(透过现象看本质)分析与求3!+5!+7!+9!相同

1+4--s=s+4

1+4+7----s=s+7

1+4+7+10-----s=s+10

假设:

int s=0;//最终结果

int r=0;//保存每个括号里面的和

for(int i=1;i<=n;i+=3){

         r+=i;

         s+=r;

}

n=12,11

if((n-1)%3!=0){

         s += r+n;

}           

如n=4、n=7;n=12

         i        r        s       n

         1       0       0               

                   1       1

         4       5       6

         7       12     18

         11     23     41

代码如下:

public static void main(String[] args){

      Scanner s = new Scanner(System.in);

      System.out.println("请输入数值n");

      int n = s.nextInt();

      int s=0;

      int sum = 0;

      for(int i=1;i<=n;i+=3){

         sum +=i;

         s+=sum;

      }

      if((n-1)%3!=0){

         s = s+sum+n;

      }

      System.out.println(s);

   }

public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("请输入数值n:");
        int n = s.nextInt();
        int result = 0;
        int sum = 0;
        for (int i = 1; i <= n; i += 3) {
            sum += i;
            result += sum;
        }
        if ((n - 1) % 3 != 0) {
            result += sum + n;
        }
        System.out.println(result);
        s.close();
    }