20190321作业整理

  • 已知x,y是正整数,满足$100times x+10times y=10000$,输出所有可能的x,y。
    1
    2
    3
    4
    5
    6
    7
    8
    int (){
    for(int x=1;x<100;x++){
    if((10000-100*x)%10==0){
    cout<<x<<" "<<(10000-100*x)/10<<endl;
    }
    }
    return 0;
    }
  • 百马驮百瓦。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int (){
    int ans=0;
    for(int x=0;x<=100;x++){
    for(int y=0;x+y<=100;y++){
    int z=100-x-y;
    if(3*x+2*y+z==100){
    ans++;
    }
    }
    }
    cout<<ans<<endl;
    }
  • 分解质因数。如:20 = 225
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    int (){
    int n;cin>>n;
    for(int i=2;i<n;i++){
    if(n%i==0){
    while(n%i==0){
    cout<<i<<" ";
    n=n/i;
    }
    }
    }
    if(n>1)cout<<n<<endl;
    return 0;
    }
  • 输出一个字母三角形
1
2
3
4
5
6
7
8
int (){
for(int i=26;i>=1;i--){
for(int j=i;j>=1;j--)cout<<" ";
for(int j=0;j<=26-i;j++)cout<<(char)(j+'a')<<" ";
cout<<endl;
}
return 0;
}
  • 输入5个数字,判断最大整数值
1
2
3
4
5
6
7
8
9
10
int (){
int a,b,c,d,e;
cin>>a>>b>>c>>d>>e;
int mx=a;
if(mx<b)mx=b;
if(mx<c)mx=c;
if(mx<d)mx=d;
if(mx<e)mx=e;
cout<<mx;
}
  • 将n秒表示成时分秒的形式
    1
    2
    3
    4
    int main(){
    int n;cin>>n;
    cout<<n/3600<<" "<<n%3600/60<<" "<<n%60<<endl;
    }
  • 求S=1+(1+2)+(1+2+3)+…+(1+2+3+…+10)。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int main(){
    int s=0;
    for(int i=1;i<=10;i++){
    for(int j=1;j<=i;j++){
    s+=j;
    }
    }
    cout<<s;
    }
  • 求$S=1^1+2^2+3^3+…+n^n$
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int main(){
    long long s=0;
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
    long long tmp=1;
    for(int j=1;j<=i;j++)tmp*=i;
    s+=tmp;
    }
    cout<<s;
    }
  • 龙虎斗思路
    首先,预处理出最初始的时候,双方势力 值总和。
    记为sum1和sum2。然后,s1个人出现在p1军营,你判断一下p1属于谁,相应的改动sum1和sum2的值便可。
    这个时候,你要穷举所有的位置,计算把s2个人放在这个位置的情况,对sum1和sum2的影响。
    最后维护一下最小差距便可。
    整体复杂度O(n)。

以上。update by 屈京 2019/3/21。