Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 6bf05c2

Browse files
Create We Like AGC.cpp
1 parent 85f1a9f commit 6bf05c2

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
#include <iostream>
2+
#include <vector>
3+
4+
using namespace std;
5+
6+
const int N = 100 + 5, NO_OF_LETTERS = 4, MOD = 1e9 + 7, T_INDEX = 3;
7+
long long no_of_strings[N][NO_OF_LETTERS][NO_OF_LETTERS][NO_OF_LETTERS];
8+
char letter[NO_OF_LETTERS] = {'A', 'C', 'G', 'T'};
9+
10+
int ok(int last_1, int last_2, int last_3, int last_4)
11+
{
12+
char l1 = letter[last_1], l2 = letter[last_2], l3 = letter[last_3], l4 = letter[last_4];
13+
14+
if(l1 == 'A' && l2 == 'G' && l4 == 'C')
15+
return false;
16+
if(l1 == 'A' && l3 == 'G' && l4 == 'C')
17+
return false;
18+
if(l1 == 'A' && l2 == 'G' && l3 == 'C')
19+
return false;
20+
if(l2 == 'A' && l3 == 'G' && l4 == 'C')
21+
return false;
22+
if(l1 == 'G' && l2 == 'A' && l3 == 'C')
23+
return false;
24+
if(l2 == 'G' && l3 == 'A' && l4 == 'C')
25+
return false;
26+
if(l1 == 'A' && l2 == 'C' && l3 == 'G')
27+
return false;
28+
if(l2 == 'A' && l3 == 'C' && l4 == 'G')
29+
return false;
30+
31+
return true;
32+
}
33+
34+
int main()
35+
{
36+
int length;
37+
cin >> length;
38+
39+
vector <long long> total(length + 1, 0);
40+
41+
for(int i = 1; i <= length; i++)
42+
{
43+
for(int last_1 = 0; last_1 < NO_OF_LETTERS; last_1++)
44+
{
45+
for(int last_2 = 0; last_2 < NO_OF_LETTERS; last_2++)
46+
{
47+
for(int last_3 = 0; last_3 < NO_OF_LETTERS; last_3++)
48+
{
49+
no_of_strings[i][last_1][last_2][last_3] = 0;
50+
51+
for(int last_4 = 0; last_4 < NO_OF_LETTERS; last_4++)
52+
{
53+
if(i == 1)
54+
{
55+
no_of_strings[i][last_1][T_INDEX][T_INDEX] = 1;
56+
}
57+
else if(i == 2)
58+
{
59+
no_of_strings[i][last_1][last_2][T_INDEX] = 1;
60+
}
61+
else if(i == 3)
62+
{
63+
if(ok(T_INDEX, last_3, last_2, last_1))
64+
{
65+
no_of_strings[i][last_1][last_2][last_3] = 1;
66+
}
67+
}
68+
else if(ok(last_4, last_3, last_2, last_1))
69+
{
70+
no_of_strings[i][last_1][last_2][last_3] += no_of_strings[i - 1][last_2][last_3][last_4];
71+
}
72+
}
73+
74+
no_of_strings[i][last_1][last_2][last_3] %= MOD;
75+
76+
total[i] = (total[i] + no_of_strings[i][last_1][last_2][last_3])%MOD;
77+
}
78+
}
79+
}
80+
}
81+
82+
cout << total[length];
83+
return 0;
84+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /