我最近在课堂上做了一个测试。问题之一是:
给定一个数字n,用C / C ++编写一个函数,该函数返回数字平方的数字总和。(以下内容很重要)。的范围的Ñ为[ - (10 ^ 7),10 ^ 7]。示例:如果n = 123,则您的函数应返回14(1 ^ 2 + 2 ^ 2 + 3 ^ 2 = 14)。
这是我写的函数:
int sum_of_digits_squared(int n)
{
int s = 0, c;
while (n) {
c = n % 10;
s += (c * c);
n /= 10;
}
return s;
}
Run Code Online (Sandbox Code Playgroud)
看着我正确。所以现在测试又回来了,我发现老师由于我不明白的原因没有给我所有的分数。据他说,为了使我的功能更完整,我应该添加以下细节:
int sum_of_digits_squared(int n)
{
int s = 0, c;
if (n == 0) { // …Run Code Online (Sandbox Code Playgroud) 为什么这样的操作:
std::cout << (-7 % 3) << std::endl;
std::cout << (7 % -3) << std::endl;
Run Code Online (Sandbox Code Playgroud)
给出不同的结果?
-1
1
Run Code Online (Sandbox Code Playgroud) 我的朋友说"mod"和"rest"之间存在差异.
如果是这样,那么C和C++的差异是什么?"%"是指C中的"mod"还是"rem"?
我厌恶的C语言(作为一名数学家)就是这样的
(-1) % 8 // comes out as -1, and not 7
fmodf(-1,8) // fails similarly
Run Code Online (Sandbox Code Playgroud)
什么是最好的解决方案?
C++允许模板和运算符重载的可能性,但这些对我来说都是模糊的.感激地收到了例子.
我们大多数人都熟悉最大和子阵列问题.我遇到了这个问题的一个变体,要求程序员输出模数为M的所有子阵列总和的最大值.
解决这种变体的天真方法是找到所有可能的子阵列总和(其数量为N ^ 2,其中N是数组的大小).当然,这还不够好.问题是 - 我们怎样才能做得更好?
示例:让我们考虑以下数组:
6 6 11 15 12 1
设M = 13.在这种情况下,子阵列6 6(或12或6 6 11 15或11 15 12)将产生最大总和(= 12).
我一直在编写以下重现关系的程序:
An = 5An-1 - 2An-2 - An-3 + An-4
Run Code Online (Sandbox Code Playgroud)
输出应该是答案模数10 ^ 9 + 7 ..我为此写了一个蛮力方法如下......
long long int t1=5, t2=9, t3=11, t4=13, sum;
while(i--)
{
sum=((5*t4) - 2*t3 - t2 +t1)%MOD;
t1=t2;
t2=t3;
t3=t4;
t4=sum;
}
printf("%lld\n", sum);
Run Code Online (Sandbox Code Playgroud)
其中MOD= 10^9 +7
每件事似乎都是真的..但我得到了一些价值的否定答案..由于这个问题,我无法找到正确的解决方案...... Plz帮助保持正确的地方Modulus
基本上,我需要(-3) % 5是"2"而不是"-3".Python产生"2",但C++产生"-3".不知道如何在C++中生成"2".谢谢!
我似乎记得ANSI C没有指定当模运算符的操作数为负时应该返回什么值(只是它应该是一致的).它是否稍后被指定,或者是否总是被指定并且我记得不正确?
我有几行C代码测试模运算符如下:
// line 1
printf("%d\n", 5 % (-3)); => output: 2
// line 2
printf("%d\n", -5 % 3); => output: -2
Run Code Online (Sandbox Code Playgroud)
我知道模数的符号取决于分子的符号,但我很好奇为什么不这样做呢?
在 C 语言中,以下代码...
#include<stdio.h>
#include<string.h>
#include<stdbool.h>
#include<stdlib.h>
int main() {
int result = (-12) % (10);
printf("-12 mod 10 = %d\n",result);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
给出这个输出
> gcc modTest.c
> ./a.out
-12 mod 10 = -2
Run Code Online (Sandbox Code Playgroud)
但根据这个 mod 计算器-12 mod 10 = 8
在Python中...
> python
Python 3.3.0 (default, Mar 26 2013, 09:56:30)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-52)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> (-12) % (10)
8
Run Code Online (Sandbox Code Playgroud)
C 中发生了什么,产生 -2 而不是 …