1.输入一个有符号整数,输出该整数的反转值。
使用取模运算
一个数除以10取商获取除去个位数剩下的数,而取余就是取它的个位数。
比如 123456/10 = 12345;123456%10 = 6;
按照这个思路去拆解这个整数,下面就好做了。
看算法:
#include<iostream>
using namespace std;
int main()
{
int input;
cin >> input;
int output = 0;
while(input!=0)
{
output=output*10+input%10;
input/=10;
}
cout<<output;
}
2.给定整数n,取若干个1到n的整数可求和等于整数m,编程求出所有组合的个数。比如当n=6,m=8时,有四种组合:[2,6], [3,5], [1,2,5], [1,3,4]。限定n和m小于120
#include <bits/stdc++.h>
using namespace std;
int dp[122][122];
int main(int argc, char *argv[])
{
int n,m;
scanf("%d%d",&n,&m);
memset(dp,0,sizeof(dp));
//初始化dp
dp[0][0] = 1;
for(int k=1;k<=m;++k)
dp[0][k] = 0;
for(int k=1;k<=n;++k)
dp[k][0] = 1;
//dp[i][j]表示:从1,2,...,i-1,i取若干个整数求和等于整数j的组合的个数
for(int j=1;j<=m;++j)
for(int i=1;i<=n;++i)
if((j-i)>=0)
dp[i][j] = dp[i-1][j] + dp[i-1][j-i];
else
dp[i][j] = dp[i-1][j];
cout << dp[n][m] << endl;
return 0;
}