百战守姜山
2021-10-15 00:03
采纳率: 80%
浏览 55

求大身做做这个oj题目

img

  • 收藏

4条回答 默认 最新

  • 广大菜鸟 2021-10-15 00:31
    已采纳
    
    #include<iostream>
    using namespace std;
    int oddSum(int n) {
        return n * n * (2 * n * n - 1);
    }
    int evenSum(int n) { 
        return 2 * 2 * n * (n + 1) * (2*n + 1) / 6;
    }
    int main() {
        int N, m, n;
        cin >> N;
        while (N--) {
            cin >> m >> n;
            if (m > n) swap(m, n);
            // sum(x^2) | m n
            //  1^2 + ... + n^2 = n*(n+1)*(2n+1)/6
            // (2*1)^2 + ... + (2*n)^2 = 4 *  ( 1^2 + ... + n^2) = 4 * n*(n+1)*(2n+1)/6
            cout << evenSum(n) - evenSum(m) << endl;
            // 奇数sum(x^3) | m n
            //  (2*1-1)^3 + ... + (2*n-1)^3 = n^2 * (2*n^2 -1)
            cout << oddSum(n) - oddSum(m) << endl;
        }
    }
    
    

    img

    已采纳该答案
    打赏 评论
  • Coming Liu 2021-10-15 00:25
    
    #include <bits/stdc++.h>
    
    using namespace std;
    
    int main(){
        ios::sync_with_stdio(false);
        cin.tie(0);
        cout.tie(0);
        int t;
        int m, n;
        cin >> t;
        while(t--){
            cin >> n >> m;
            int ans = 0;
            if(n > m) swap(n, m);
            for(int i=n;i<=m;i++){
                if(i & 1) ans += i * i * i;
                else ans += i * i;
            }
            cout << ans << '\n';
        }
        return 0;
    }
    
    打赏 评论
  • 广大菜鸟 2021-10-15 00:55

    下面作为给其他读者参考的答案吧,其实题主采纳的是下面的代码,之前回答考虑少了,然后输出的不是正确的,现在才对

    #include<iostream>
    using namespace std;
    int oddSum(int n) {
        return n * n * (2 * n * n - 1);
    }
    int evenSum(int n) { 
        return 2 * 2 * n * (n + 1) * (2*n + 1) / 6;
    }
    int main() {
        int N, m, n;
        int minOdd, maxOdd, minEven, maxEven;
        cin >> N;
        while (N--) {
            cin >> m >> n;
            if (m > n) swap(m, n);
    
            // sum(x^2) | m n
            //  1^2 + ... + n^2 = n*(n+1)*(2n+1)/6
            // (2*1)^2 + ... + (2*n)^2 = 4 *  ( 1^2 + ... + n^2) = 4 * n*(n+1)*(2n+1)/6
            minEven = m-1;
            while (minEven>0&&minEven % 2 == 1) {
                minEven -= 1;
            }
            if (minEven < 0) minEven = 0;
            maxEven = n;
            while (maxEven % 2 == 1) {
                maxEven -= 1;
            }
            if (maxEven < 0) maxEven = 0;
            // 转换成序号
            cout << - evenSum(minEven/2) + evenSum(maxEven/2) << " ";
            
            // 奇数sum(x^3) | m n
            //  (2*1-1)^3 + ... + (2*n-1)^3 = n^2 * (2*n^2 -1)
            minOdd = m-1;
            while (minOdd>0&&minOdd % 2 == 0) {
                minOdd -= 1;
            }
            if (minOdd < 0) minOdd = 0;
            maxOdd = n;
            while (maxOdd % 2 == 0) {
                maxOdd -= 1;
            }
            if (maxOdd < 0) maxOdd = 0;
            // 转换成序号
            cout <<  - oddSum((minOdd+1)/2 ) + oddSum((maxOdd + 1) / 2) << endl;
        }
    }
    
    打赏 评论
  • 
    #include <stdio.h>
    #include <math.h>
    int main()
    {
    
        int a = 0,b = 0,i = 0,count,tmp,j=0;
        int arr[64];
        printf("输入几组数据?:\n");
        scanf("%d",&count);
        tmp = count;
        printf("输入每组的两个整数:\n");
        while(tmp--)
        {   
            scanf("%d %d",&arr[i],&arr[i+1]);
            i += 2;
        }   
    
        for(j-0;j<count*2;j++)
        {   
            if(arr[j]%2)
            {
                a += pow(arr[j],3);
            }
            else
            {
                b +=pow(arr[j],2);
            }
        }   
    
        printf("所有偶数的平方和为:%d\n所有奇数的三次方和为:%d\n",b,a);
        return 0;
    }
    
    
    
    打赏 评论

相关推荐 更多相似问题