JZ-C-47

剑指offer第四十七题:不能用加减乘除做加法

 1 //============================================================================
 2 // Name        : JZ-C-47.cpp
 3 // Author      : Laughing_Lz
 4 // Version     :
 5 // Copyright   : All Right Reserved
 6 // Description : 不能用加减乘除做加法
 7 //============================================================================
 8
 9 #include <iostream>
10 #include <stdio.h>
11 using namespace std;
12
13 int Add(int num1, int num2) {
14     int sum, carry;
15     do {
16         sum = num1 ^ num2; //第一步:异或(各(★)位相加,先不考虑进位)
17         carry = (num1 & num2) << 1; //第二步:先与运算再左移得到进位
18
19         num1 = sum;
20         num2 = carry;
21     } while (num2 != 0); //第三步:前两个步骤的结果相加(重复前面两步,直到不产生进位为止)
22
23     return num1;
24 }
25
26 // ====================测试代码====================
27 void Test(int num1, int num2, int expected) {
28     int result = Add(num1, num2);
29     if (result == expected)
30         printf("%d + %d is %d. Passed\n", num1, num2, result);
31     else
32         printf("%d + %d is %d. Failed\n", num1, num2, result);
33 }
34
35 int main(int argc, char** argv) {
36     Test(1, 2, 3);
37     Test(111, 899, 1010);
38     Test(-1, 2, 1);
39     Test(1, -2, -1);
40     Test(3, 0, 3);
41     Test(0, -4, -4);
42     Test(-2, -8, -10);
43 }
时间: 2024-12-14 18:54:46

JZ-C-47的相关文章

矩阵乘法快速幂 codevs 1732 Fibonacci数列 2

1732 Fibonacci数列 2 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 在“1250 Fibonacci数列”中,我们求出了第n个Fibonacci数列的值.但是1250中,n<=109.现在,你的任务仍然是求出第n个Fibonacci数列的值,但是注意:n为整数,且1 <= n <= 100000000000000 输入描述 Input Description 输入有多组数据,每

第七课 突破512字节限制--中

上一节我们写了字符串打印的函数和软盘读取函数,在软盘读取函数中,我们是直接给定了要读的逻辑扇区号,这一节我们来实现一个查找文件的功能,也就是根据给定的文件名,在根目录区中查找指定的文件是否存在,涉及到文件名的查找,就会涉及到内存的比较,因此,我们需要实现两个函数,分别为内存比较函数和根目录区查找函数. 整体的流程如下: 首先将根目录区加载到内存中的指定位置上,这里面包含了一定数目的根目录项,而根目录项的前11个字节为文件名,因此,查找文件的工作就可以进行了,我们只需要将目标文件名和每一个根目录项

转载---编写高质量代码:改善Java程序的151个建议(第3章:类、对象及方法___建议47~51)

阅读目录 建议47:在equals中使用getClass进行类型判断 建议48:覆写equals方法必须覆写hashCode方法 建议49:推荐覆写toString方法 建议50:使用package-info类为包服务 建议51:不要主动进行垃圾回收 回到顶部 建议47:在equals中使用getClass进行类型判断 本节我们继续讨论覆写equals的问题,这次我们编写一个员工Employee类继承Person类,这很正常,员工也是人嘛,而且在JavaBean中继承也很多见,代码如下: 1 p

Win32 汇编 - 跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等

跳转指令分三类:一.无条件跳转: JMP;二.根据 CX.ECX 寄存器的值跳转: JCXZ(CX 为 0 则跳转).JECXZ(ECX 为 0 则跳转);三.根据 EFLAGS 寄存器的标志位跳转, 这个太多了. 根据标志位跳转的指令: JE ;等于则跳转 JNE ;不等于则跳转 JZ ;为 0 则跳转 JNZ ;不为 0 则跳转 JS ;为负则跳转 JNS ;不为负则跳转 JC ;进位则跳转 JNC ;不进位则跳转 JO ;溢出则跳转 JNO ;不溢出则跳转 JA ;无符号大于则跳转 JNA

Java基础知识强化之集合框架笔记47:Set集合之TreeSet保证元素唯一性和比较器排序的原理及代码实现(比较器排序)

1. TreeSet保证元素唯一性和比较器排序的原理及代码实现(比较器排序) (1)Student.java: 1 package cn.itcast_07; 2 3 public class Student { 4 private String name; 5 private int age; 6 7 public Student() { 8 super(); 9 } 10 11 public Student(String name, int age) { 12 super(); 13 thi

SQL查询语句47题

1 select * from student 2 select * from score 3 --select * from grade 4 select * from course 5 select * from teacher 6 7 --1. 查询Student表中的所有记录的Sname.Ssex和Class列. 8 select sname,ssex,class from Student 9 --2. 查询教师所有的单位即不重复的Depart列. 10 select distinct

1140: 零起点学算法47——求平均值

1140: 零起点学算法47--求平均值 Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 1408  Accepted: 873[Submit][Status][Web Board] Description 输入一些整数,求平均值 Input 多组测试数据 首先输入1个整数n表示测试组数 然后每行首先输入1个整数m,再输入m个整数 Output 对于每组测试数据输出1行,内容为m个整数的平均值,保留

LeetCode39/40/22/77/17/401/78/51/46/47/79 11道 Backtracking

LeetCode 39 1 class Solution { 2 public: 3 void dfs(int dep, int maxDep, vector<int>& cand, int target) 4 { 5 if (target < 0)return; 6 if (dep == maxDep) 7 { 8 if (target == 0)//到达尾部且等于target 9 { 10 vector<int> temp; 11 for (int i = 0;

Java基础知识强化47:StringBuffer类之判断一个字符串是否对称案例

1. 分析:判断一个字符串是否是一个对称的字符串,我们只需要把字符串的第1个字符和最后1个字符,第2个字符和倒数第2个字符,…… 比较的次数是长度除以2. 2. 案例演示: 1 package cn.itcast_07; 2 3 import java.util.Scanner; 4 5 /* 6 * 判断一个字符串是否是对称字符串 7 * 例如"abc"不是对称字符串,"aba"."abba"."aaa"."mna

Thinkphp入门三—框架模板、变量(47)

原文:Thinkphp入门三-框架模板.变量(47) [在控制器调用模板] display()   调用当前操作名称的模板 display(‘名字’)  调用指定名字的模板文件 控制器调用模板四种方式: [在控制器给模板传递变量] 在smarty里边给模板传递变量信息 $smarty -> assign(变量名称,值); 在tp框架里边同样适用assign()给模板传递变量信息 ThinkPHP的模板引擎的左右标记: ThinkPHP/Lib/ Behavior/ ParseTemplateBe