输出满足1+2+3...+n<8888的最大正整数.(作业)

public class babababa{    
    public static void main(String args[]){       
	int a=1,b=2,c=0;  
    while(a<8888){  
	c++;
    a=a+b;  
    b++;  
    }  
    System.out.print(""+c);  
    }  
    }  

# (1) 括号检验 算法思路: 使用栈来实现,遍历表达式,遇到左括号时将其入栈,遇到右括号时将栈顶元素出栈并与当前右括号进行匹配,如果匹配成功则继续遍历,否则表达式括号匹配失败。最后判断栈是否为空,若为空则括号匹配成功,否则匹配失败。 代码实现: ```python def check_parentheses(expression): stack = [] for char in expression: if char == '(': stack.append(char) elif char == ')': if stack and stack[-1] == '(': stack.pop() else: return False return not stack ``` # (2) 分数相加 算法思路: 将分数数组中的每个元素转换成小数,然后枚举所有可能的相加方式,对每一种相加方式进行判断,如果相加结果等于1,则输出相加方式。 代码实现: ```python from fractions import Fraction def sum_fraction(): fractions = [Fraction(1, 2), Fraction(1, 3), Fraction(1, 4), Fraction(1, 5), Fraction(1, 6), Fraction(1, 8), Fraction(1, 10), Fraction(1, 12), Fraction(1, 15)] decimals = [float(f) for f in fractions] for i in range(1, len(fractions) + 1): for indices in combinations(range(len(fractions)), i): if sum([decimals[j] for j in indices]) == 1: print('+'.join([str(fractions[j]) for j in indices]), '=', 1) ``` 其中, `combinations` 函数是从 `itertools` 库中导入的,用于生成从给定元素中取出指定数量元素的所有可能组合。 # (3) 整除数 算法思路: 使用回溯法遍历所有可能组合,如果某一组合满足题目条件,则输出该组合。 代码实现: ```python def is_divisible(number): for i in range(1, len(number) + 1): if int(number[:i]) % i != 0: return False return True def find_divisible_numbers(): digits = '123456789' result = [] def backtrack(path): if len(path) == len(digits): if is_divisible(path): result.append(int(path)) else: for digit in digits: if digit not in path: backtrack(path + digit) backtrack('') return result ``` # (7) 连续正整数和 算法思路: 使用双指针法,设左指针为 `left`,右指针为 `right`,初始值均为 1。如果从 `left` 到 `right` 的连续正整数之和小于目标值,则将右指针向右移动一位;如果和大于目标值,则将左指针向右移动一位;如果和等于目标值,则记录当前的连续正整数序列,并将左指针向右移动一位。 代码实现: ```python def find_continuous_sequences(target): left, right = 1, 1 result = [] while left <= target // 2: total = sum(range(left, right + 1)) if total == target: result.append(list(range(left, right + 1))) left += 1 elif total < target: right += 1 else: left += 1 return result ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值