当前位置: 首页 > 知识库问答 >
问题:

不使用*、/、-、%运算符将数字除以3

饶谦
2023-03-14

如果不使用*/-%运算符,您将如何将数字除以3?

该号码可以是签名的或未签名的。

共有3个答案

庞意智
2023-03-14
log(pow(exp(number),0.33333333333333333333)) /* :-) */
黄浩涆
2023-03-14

愚蠢的情况需要愚蠢的解决方案

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE * fp=fopen("temp.dat","w+b");
    int number=12346;
    int divisor=3;
    char * buf = calloc(number,1);
    fwrite(buf,number,1,fp);
    rewind(fp);
    int result=fread(buf,divisor,number,fp);
    printf("%d / %d = %d", number, divisor, result);
    free(buf);
    fclose(fp);
    return 0;
}

如果还需要小数部分,只需声明结果,并将fmod(数字,除数)的结果添加到其中。

解释它是如何工作的

  1. fwrite写入number字节(上例中的数字为123456)
  2. 倒带将文件指针重置为文件的前面
  3. fread从文件中读取长度为除数的最大number记录,并返回读取的元素数

如果您写入30个字节,然后以3为单位读回文件,则得到10个“单位”。30 / 3 = 10

顾乐心
2023-03-14

这是一个执行所需操作的简单函数。但是它需要运算符,所以剩下要做的就是用位运算符添加值:

// replaces the + operator
int add(int x, int y)
{
    while (x) {
        int t = (x & y) << 1;
        y ^= x;
        x = t;
    }
    return y;
}

int divideby3(int num)
{
    int sum = 0;
    while (num > 3) {
        sum = add(num >> 2, sum);
        num = add(num >> 2, num & 3);
    }
    if (num == 3)
        sum = add(sum, 1);
    return sum; 
}

正如Jim评论的那样,这很有效,因为:

>

a==0(n

 类似资料:
  • 我写了一个代码,在两个数相除后求出商,但不使用乘法、除法或mod运算符。 我的代码 我的代码通过了像分红=-1、除数=1或分红=1和除数=-1这样的测试用例。但是它不能通过像分红=--2147483648和除数=-1这样的测试用例。但是当两个输入都是负数时,我有一个if语句。 当我的输入为-2147483648和-1时,它返回零。我调试了代码,发现它无法到达while循环的内部语句。它只是检查wh

  • 问题内容: 我正在使用以下代码: 自从更新到Xcode 7.3(Swift 2.2)以来,我得到了以下提示: 不建议使用“ init(start:end :)”:它将在Swift 3中删除。请使用“ .. <”运算符。 对我来说,不清楚如何使用“ .. <”运算符正确地对其进行“翻译”。 问题答案: 你应该简单地写 或者如果您想更简单

  • 问题内容: 如何从字符串中删除除数字以外的所有字符? 问题答案: 在Python 2. *中,到目前为止最快的方法是: 生成一个转换表(长度为256的字符串),在这种情况下,该转换表与(更快地制作;-)相同。应用转换表(这里无关紧要,因为本质上是指身份),并删除第二个参数(关键部分)中存在的字符。 在Unicode字符串(和Python 3中的字符串)上的工作方式大不相同-我 确实 希望指出问题是

  • 模板输出进可以使用几个运算符: 加法: {$a+$b} 减法: {$a-$b} 乘法: {$a \* $b} 除法: {$a/$b} 取余: {$a%$b} ++: {$a++} {++$a} --: {$a--} {--$a} 综合运算: {$a+$b+$c*$d}

  • 请参考:http://www.kancloud.cn/manual/thinkphp/1798

  • 模板输出进可以使用几个运算符: 加法: {$a+$b} 减法: {$a-$b} 乘法: {$a * $b} 除法: {$a/$b} 取余: {$a%$b} ++: {$a++} {++$a} --: {$a--} {--$a} 综合运算: {$a+$b+$c*$d}