1;
暴力计数,结果为:624.
#include<stdio.h>
int main(){
int count2=0,i;
for(i=1; i<=2020;i++){
if(i%10==2)
count2++;
if((i%100)/10==2)
count2++;
if((i%1000)/100==2)
count2++;
if(i/1000 ==2)
count2++;
}
printf("%d\n",count2);
return 0;
}//624
2:
方法:暴力法:分子到分母依次遍历(注意分情况,不然容易出错)。答案为:2481215.(既约分数其实可以初步分为:奇/偶,奇/奇两种情况。偶数一直除2后仍为奇数。进而化为奇/奇的情况进行判断。
暴力算法思路:
i,j存储分子分母,num保存数量。
f2,f1分别表示较大较小值。
i=1,2分开讨论。
i>=3时:
1分子分母为倍数关系。不是。
2:从2开始遍历,到f1结束。存在一个数位公共因数,则不是。
1,2都不有跳出,则当前i,j是。num++.
)
#include<stdio.h>
int num=0;
#define N 2020
int main(){
int i,j,k,f1,f2,jn=1;
for(i=1;i<=N;i++)//分子1-N
{
if(i==1)
{
num=N;;
continue;
}
for(j=1;j<=N;j++)
{
if(j==1)
{
num++;
// printf("jnum is %d\n",num);
continue;
}
//判断有无公共因数
f1 = i<=j? i:j;
f2 = i>=j? i:j;
if(f1==2){//分子或分母中一个为2
if(f2%2==0) continue;
else {
num++;
continue;
};
}
if(i==j || f2%f1==0) continue;//3/3|6的情况(分子分母为倍数关系)
for(k=2; k<f1; k++)//f1>2才行
{
if(i%k==0 && j%k==0)
{
jn=0;//表明存在,使得ij不是
break;
}
}
if(jn==0){
jn=1;
continue;
}
else{
num++;
// printf("end i,j,num is %d,%d,%d\n",i,j,num);
}
}
// printf("end i,j,num is %d,%d,%d\n",i,j,num);
}
printf("%d\n",num);
return 0;
}
3:
直接观察计算:(看成长方形)
m(n,n)=n*(2n-1)-(n-1).带入的761.
下面为模拟过程的代码:
/*
* @Date: 2020-10-17 22:05:26
* @LastEditTime: 2020-10-17 22:06:55
* @Author's blog: blog.nuoyanli.com
* @Description: Plum blossom from the bchter cold!
*/
#include <bits/stdc++.h>
using namespace std;
int mmp[50][50], id;
int main() {
for (int i = 1; i <= 40; i++) {
if (i & 1) {
int idx = i, idy = 1;
for (int j = 0; j < i; j++){
mmp[idx - j][idy + j] = ++id;
}
} else {
int idx = 1, idy = i;
for (int j = 0; j < i; j++){
mmp[idx + j][idy - j] = ++id;
}
}
}
cout << mmp[20][20] << endl;
return 0;
}
这个原代码链接:ttps://blog.youkuaiyun.com/nuoyanli/article/details/109138714
4:跑步锻炼:
答案为:8879;
思路代码:这道理太简单了,就不写代码了。
思路:模拟过程:
注意:
1:闰年和 非闰年就2月不同。
2:注意开始和截止时间。
还是写下代码吧:
#include<stdio.h>
int num=0;//注意第一天
#define N 2020
int main(){
int year=2000,mon=1,day=1;
int weekday=6,bb=0;
int monday[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
while(bb==0){//10.1号要跑。
num++;//默认跑1
if(weekday==1 || day==1){
num++;
}
//判断是不是闰年
if(year%400==0 ||(year%4==0&&year%100!=0) )
{
monday[2]=29;//is
}
else
monday[2]=28;
//周更替
if(weekday<7)
{
weekday++;
}
else{
weekday=1;
}
//日,月,年更替;
if(day<monday[mon]){
day++;
}
else{
day=1;
// mon++;
if(mon<12){
mon++;
}
else{
mon=1;
year++;
printf("year is add %d\n",year);
}
}
// if(year==2000 && mon==1 && day==2)// 截止日期后一天
if(year==2020 && mon==10 && day==2)// 10.1号要跑。
bb=1;
}//while
printf("num is %d\n",num);//注意开始的1号
return 0;
}
5:
思路:2^7=128.直接排列组合。
计算亮灯数与对应不连同的计数:
0:1;(没有灯亮)
1:0;(亮一盏灯,一定连同。)
2:13;
3:17;
4:13;(等价余灭三个,不连同的计数。)
5:4;
6;0;
7;0;
总和为:48.故而结果为:128-48=80;
6:
注意四佘五入就行。很简单。
7:
解决法:暴力遍历出所有回文,比所输入的大就行。
8:
暴力算法,可以通过部分解。
9:
首先:增加的平面数量n=1+新线所添加的交点。
10:
1;确定n个字符,能行成的最大逆序数。n(n-1)/2.