記事のディレクトリ
トピックリンク 。
アルゴリズムのアイデア
A、B、C、およびDにはそれぞれ0、1、2、および3の番号が付けられ、モジュロ演算を使用して、A、B、C、またはDの人物を記録します。要件を満たすためにスキップされた場合、n++
この時間を表すために使用することは、報告された数に含まれません。報告される数値については、モジュロ演算を使用して各桁を取得します。
//第五次实验 5.
#include<iostream>
using namespace std;
int n, person = 0;
int jump[4] = {}; //四人跳过的次数; 甲,乙,丙,丁:0, 1, 2, 3
bool jump_over(int x);
int main()
{
int i;
scanf("%d", &n);
for ( i = 1; i <= n; i++)
{
if (jump_over(i)) //跳过
{
jump[person]++;
n++;//这次不算
}
person++;
person = person % 4;
}
for ( i = 0; i < 4; i++)
{
printf("%d\n", jump[i]);
}
return 0;
}
bool jump_over(int x) //是否跳过
{
//是 7 的倍数
if (x == (x / 7) * 7)
{
return true;
}
//含有 7
while (x)
{
if (x % 10 == 7) // x 的个位数
{
return true;
}
x = x / 10;
}
return false;
}
結果分析
スコアは100ポイント、時間は0ミリ秒、スペースは2.941MB、時間計算量はO(n)です。