C++ 总和的最后一位

C++ 总和的最后一位,c++,C++,在一个问题中,我需要找到求和结果的最后一位::s=1^4+2^4+3^4+…+但是,我不知道为什么我在这个问题上只拿了40% #include <iostream> #include <cmath> using namespace std; int main() { int n; cin >> n; long long pow = 1, result=1; for (int i = 1; i <= n; i++

在一个问题中,我需要找到求和结果的最后一位::s=1^4+2^4+3^4+…+但是,我不知道为什么我在这个问题上只拿了40%

#include <iostream>
#include <cmath>
using namespace std;

int main()
{

    int n;
    cin >> n;
    long long pow = 1, result=1;
   
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j < 5; j++)
        {
            result = 1LL * pow * i;
        }
    }
    int cifra = result % 10;
    cout << cifra;




    return 0;
#包括
#包括
使用名称空间std;
int main()
{
int n;
cin>>n;
长功率=1,结果=1;

对于(inti=1;i我假设你是新手,所以试试这个

#include<iostream>
#include<cmath>

int main()
{
    int n;
    double var = 0.0;
    std::cin >> n;
    
    //finding the total sum of given series
    for (int i = 0; i < n + 1; i++)
        var += pow(i, 4.0); 

    //truncating decimal values 
    var += 0.5 - (var < 0); 
    int temp = (int)var; //converting the "var" value to int so that we can use "%"

    //last digit of given sum of series    
    std::cout << temp % 10;
}
#包括
#包括
int main()
{
int n;
双var=0.0;
标准:cin>>n;
//求给定级数的和
对于(int i=0;istd::cout乘积的最后一位,仅取决于被乘数的最后一位

基于这一事实,整个代码可以仅使用
int
以更简单的方式编写:

#include <iostream>
#include <cmath>
using namespace std;

int main()
{

    int n;
    cin >> n;
    int pow = 1, result = 1;

    for (int i = 2; i <= n; i++)
    {
        pow = (i * i) % 10;         // last digit of i^2
        result += (pow * pow) % 10; // (last digit of i^2)^2
    }
    cout << (result % 10);

    return 0;
}

这是张贴的代码如何尝试计算总和的最后一位(
cifra
,此处):

我们也可以直接计算他们的总和的最后一位:

// 0, 1, 1+6 = 7, 7+1 = 8, 8+6 = 14, 14+5 = 9, ...    
int digits[] = {0, 1, 7, 8, 4, 9, 5, 6, 2, 3};
因此,对于每个
n
i
的四次幂和的最后一位是

int digit = (3 * (n / 10) + digits[n % 10]) % 10;
// 1, 7, 8, 4, 9, 5, 6, 2, 3, 3, 4, 0, 1, 7, 2, 8, 9, 5, 6, 6, 7, 3, 4, 0, 5, ...

因为你的算法的复杂度是O(n2),我不知道我的算法的复杂度。我非常乞讨。可能有一些公式可以用来解决这个问题,而不需要任何(或最小)循环。你计算了最后一个数字1^4*2^4*3^4*。*n^4,你计算的是乘积,而不是和:-)对于这样简单的计算,不要使用浮点幂。
// 0, 1, 1+6 = 7, 7+1 = 8, 8+6 = 14, 14+5 = 9, ...    
int digits[] = {0, 1, 7, 8, 4, 9, 5, 6, 2, 3};
int digit = (3 * (n / 10) + digits[n % 10]) % 10;
// 1, 7, 8, 4, 9, 5, 6, 2, 3, 3, 4, 0, 1, 7, 2, 8, 9, 5, 6, 6, 7, 3, 4, 0, 5, ...