<找工作 八>整数分解为连续整数相加

 

整数分解为连续整数相加,最长列表

 

 

def Num(a):
    start=1
    end=0
    total=0
    while(end<a/2+1):
        if total>a:
            total-=start
            start=start+1
        elif total<a:
            end+=1
            total+=end
        else:
            break

    a=range(start,end+1)        
    print a
    print sum(a)     
        
Num(9000)
 

 

``` #include <iostream> #include <algorithm> using namespace std; const int MAXN=100010; long long a[MAXN]; long long d[MAXN]; int main(){ int n; cin>>n; for(int i=0;i<n;++i){ cin>>a[i]; } d[0]=a[0]; for(int i=1;i<n;++i){ d[i]=a[i]-a[i-1]; } long long a=0,b=0; for(int i=1;i<n;++i){ if(d[i]>0){ a+=d[i]; }else{ b-=d[i]; } } long long c=max(a,b); long long d=abs(a-b)+1; cout<<c<<endl; cout<<d<<endl; return 0; }```说明 有一段代码,共有n行,起初第i行代码的开头有 a i a i ​ 个空格,根据代码的逻辑关系,小爱希望第i行开头调整成为 b i b i ​ 个空格。 小爱的文本编辑器有一个功能,它可以选中任意多行连续的代码,通过一步操作就可以在这些行的开头增加或删除一个空格。注意,若选择删除一个行首空格,必须保证选中的每一行行首都至少有一个空格,不然文本编辑器会误删其他字符,程序就要出错了。 请问最少需要多少步,才能让这段代码的缩进调整成指定的样子? 输入格式 第一行:单个整数 n n; 第二行到第 n + 1 n+1行:每行两个整数,表示 a i a i ​ ​与 b i b i ​ ​; 输出格式 单个整数:表示最少步数。 样例 输入数据 1 3 1 2 1 2 1 2 输出数据 1 1 样例 输入数据 2 4 1 2 2 2 2 2 1 2 输出数据 2 2 提示 对于 100 % 100%的数据, 1 ≤ n ≤ 100 , 000 1≤n≤100,000 0 ≤ a i , b i ≤ 10 , 000 0≤a i ​ ,b i ​ ≤10,000尽量减少修改
最新发布
03-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值