zoukankan      html  css  js  c++  java
  • 第1题:数的分解

    第1题:数的分解

    这是一道数学题,有一定的难度,但是结合数学思考就可以迎刃而解了。
    具体方法:
    先做一个例子:比如四为数abcd(当然上面有一条横线)
    它等于

    1000a+100b+10c+d
    

    去掉个位则是

    100a+10b+c
    

    继续去做是

    10a+b
    

    继续去做是

    a
    

    我们把它们加在一起是

    1111a+111b+11c+1d
    

    这么多个1,显然是突破口,那么我们就可以用除法先去做,举个例子样例564

    564÷111=5564div111=5

    564mod111=9564mod 111=9

    9÷11=09div11=0

    9mod11=99mod11=9

    9÷1=99div1=9

    我们将每次找到的数拼起来就变成了原来的数 509509

    是不是很神奇

    那么问题来了:从几个1开始入手呢? 其实很简单我们可以从16个1开始入手,因为除得0,加一个前缀0,放在int里,会自动删除呀

    所以,我们的代码来了

    #include <bits/stdc++.h>
    using namespace std;
    long long a[17]={0,1,11,111,1111,11111,111111,1111111,11111111,111111111,1111111111,11111111111,111111111111,1111111111111,11111111111111,111111111111111};
    int main(){
    	long long x,ans=0;
    	cin>>x;
    	for(int i=16;i>=1;i--){
    		if(x/a[i]>=10){
    			cout<<-1;
    			return 0;
    		}ans=ans*10+x/a[i];
    		x%=a[i];
    	}cout<<ans;
    	return 0;
    }
    
    

    我打了一个表,当然大家也可以递推做这个表,或不用数组

    #include <bits/stdc++.h>
    using namespace std;
    int main(){
    	for(int i=1;i<=n;i++)a[i]=a[i-1]*10+1;
    	return 0;
    }
    
    

    不过注意 101610^{16} 要开 longlong

  • 相关阅读:
    scratch资源
    如何把scratch转成一个swf文件或者exe执行文件
    perl的匿名引用
    perl的内置函数scalar
    perl内置特殊变量查询
    Win7中安装Windows PowerShell 3.0
    man-pages项目包含文档的说明
    编译器思维之结合律
    Android中利用jsoup解析html页面
    MVP+Retrofit+RxJava
  • 原文地址:https://www.cnblogs.com/zhaohaikun/p/12816997.html
Copyright © 2011-2022 走看看