热身赛很简单就是拿来熟悉一下OJ比赛环境的
1.熟悉一下Online Judge的环境就A+B经典入门问题没啥说的
#include2.跳远成绩int main(){ int a,b; scanf("%d %d",&a,&b); printf("%d",a+b); return 0; }
就小学数学题也没啥说的
#include3.数字解密using namespace std; typedef long long ll; int main(){ double x; scanf("%lf",&x); printf("%.1lf",(x+0.8*x+0.9*x)/3); return 0; }
就将这个四位数千位和百位颠倒、十位和个位颠倒就行
#includeusing namespace std; typedef long long ll; int main(){ string s; cin>>s; cout< 4.位数问题一个不太难的dp,设dp[i] [0]表示i位数有偶数个3的数字个数,dp[i] [1]表示i位数有奇数个3的数字个数
那么构造递推式有
- dp[i] [0] = dp[i-1] [0]*9 + dp[i-1] [1]
- dp[i] [1] = dp[i-1] [1]*9 + dp[i-1] [0]
第一个递推式,前一半意思就是i-1位数所有有偶数个3的数字个数,然后第i位放0~9除了3一共9个数,这样就组成了i位数字有偶数个3,后一半意思是i-1位数所有有奇数个3的数字个数,然后第i位放3,这样也组成了i位数字有偶数个3加起来就是总个数
第二个递推式和上面差不多,前一半意思就是i-1位数所有有奇数个3的数字个数,然后第i位放0~9除了3一共9个数,这样就组成了i位数字有奇数个3,后一半意思是i-1位数所有有偶数个3的数字个数,然后第i位放3,这样也组成了i位数字有奇数个3加起来就是总个数
然后还有一个问题就是最高位不能是0,所以在计算最高位的时侯不能放0,且只有一位数的时候,也只能也只能是1~9,9个数字,因为0不能做为位数讨论
C/C++:#includeusing namespace std; const int md =12345; int dp[1005][5]; int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin>>n; dp[1][0]=9;//初始化 dp[1][1]=1; for(int i=2;i dp[i][0]=(dp[i-1][0]*9+dp[i-1][1])%md; dp[i][1]=(dp[i-1][1]*9+dp[i-1][0])%md; } dp[n][0]=(dp[n-1][0]*8+dp[n-1][1])%md;//最高位单独计算 if(n==1)dp[n][0]=8;//只有一位数的时候特判 cout< Java:
import java.util.Scanner; public class Main{ public static void main(String args[]){ Scanner cin=new Scanner(System.in); int [][]dp= new int [1005][5]; int n,md=12345; n =cin.nextInt(); dp[1][0]=9; dp[1][1]=1; for(int i=2;idp[i][0]=(dp[i-1][0]*9+dp[i-1][1])%md; dp[i][1]=(dp[i-1][1]*9+dp[i-1][0])%md; } dp[n][0]=(dp[n-1][0]*8+dp[n-1][1])%md; if(n==1)dp[n][0]=8; System.out.println(dp[n][0]); } } Python:
dp = [[0 for j in range(1, 5)] for i in range(1, 1005)] md = 12345 n = int(input()) dp[1][0]=9 dp[1][1]=1 for i in range(2,n): dp[i][0]=(dp[i-1][0]*9+dp[i-1][1])%md dp[i][1]=(dp[i-1][1]*9+dp[i-1][0])%md dp[n][0]=(dp[n-1][0]*8+dp[n-1][1])%md if(n==1) : dp[n][0]=8 print(dp[n][0])Golang
package main import "fmt" func main() { var dp [1005][5]int n:=0 md := 12345 _, err := fmt.Scanf("%d", &n) if err != nil{ } dp[1][0] = 9 dp[1][1] = 1 for i := 2; i < n; i++ { dp[i][0] = (dp[i-1][0]*9 + dp[i-1][1]) % md dp[i][1] = (dp[i-1][1]*9 + dp[i-1][0]) % md } dp[n][0] = (dp[n-1][0]*8 + dp[n-1][1]) % md if n == 1 { dp[n][0] = 8 } fmt.Println(dp[n][0]) }



